Saltar al contenido

Cómo obtener una cadena hexadecimal de un entero con signo

Solución:

Esto hará el truco:

>>> print hex (-1 & 0xffffffff)
0xffffffffL

o, en forma de función (y quitando la “L” final):

>>> def hex2(n):
...     return hex (n & 0xffffffff)[:-1]
...
>>> print hex2(-1)
0xffffffff
>>> print hex2(17)
0x11

o, una variante que siempre devuelve un tamaño fijo (puede haber una mejor manera de hacer esto):

>>> def hex3(n):
...     return "0x%s"%("00000000%s"%(hex(n&0xffffffff)[2:-1]))[-8:]
...
>>> print hex3(-1)
0xffffffff
>>> print hex3(17)
0x00000011

O, evitando el hex () por completo, gracias a Ignacio y bobince:

def hex2(n):
    return "0x%x"%(n&0xffffffff)

def hex3(n):
    return "0x%s"%("00000000%x"%(n&0xffffffff))[-8:]

Prueba esta función:

'%#4x' % (-1 & 0xffffffff)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *