¿Cómo convertir un int a una cadena hexadecimal?

Resuelto pynoob asked hace 14 años • 15 respuestas

Quiero tomar un número entero (que será <= 255) a una representación de cadena hexadecimal

Por ejemplo: quiero pasar 65y salir '\x41', o 255y llegar '\xff'.

Intenté hacer esto con struct.pack('c',65 ), pero eso ahoga todo lo anterior 9ya que quiere aceptar una cadena de un solo carácter.

pynoob avatar Feb 16 '10 07:02 pynoob
Aceptado

Estás buscando la chrfunción.

Parece que estás mezclando representaciones decimales de números enteros y representaciones hexadecimales de números enteros, por lo que no está del todo claro lo que necesitas. Según la descripción que diste, creo que uno de estos fragmentos muestra lo que quieres.

>>> chr(0x65) == '\x65'
True


>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

Tenga en cuenta que esto es bastante diferente de una cadena que contiene un número entero en formato hexadecimal . Si eso es lo que quieres, usa el hexarchivo incorporado.

Mike Graham avatar Feb 16 '2010 00:02 Mike Graham

Esto convertirá un número entero en una cadena hexadecimal de 2 dígitos con el prefijo 0x:

strHex = "0x%0.2X" % integerVariable
Greg Bray avatar Feb 16 '2010 00:02 Greg Bray

Qué pasa hex()?

hex(255)  # 0xff

Si realmente quieres tener \delante puedes hacer:

print '\\' + hex(255)[1:]
Felix Kling avatar Feb 16 '2010 00:02 Felix Kling