¿Cómo puedo formatear un número entero a un hex de dos dígitos?

¿Alguien sabe cómo obtener una conversión de chr a hex donde la salida es siempre de dos dígitos?

por ejemplo, si mi conversión arroja 0x1, debo convertirlo a 0x01 , ya que estoy concatenando una cadena larga de hex.

El código que estoy usando es:

 hexStr += hex(ord(byteStr[i]))[2:] 

Puede utilizar el formato de cadena para este propósito:

 >>> "0x{:02x}".format(13) '0x0d' >>> "0x{:02x}".format(131) '0x83' 

Edición : su código sugiere que está intentando convertir una cadena en una representación de cadena hexadecimal. Hay una forma mucho más fácil de hacer esto (Python2.x):

 >>> "abcd".encode("hex") '61626364' 

Una alternativa (que también funciona en Python 3.x) es la función binascii.hexlify() .

Puede utilizar la función de formato:

 >>> format(10, '02x') '0a' 

No necesitarás eliminar la parte 0x con eso (como hiciste con [2:] )

El módulo estándar binascii también puede ser la respuesta, es decir, cuando necesita convertir una cadena más larga:

 >>> import binascii >>> binascii.hexlify('abc\n') '6162630a' 

Usar formato en lugar de usar la función hexadecimal:

 >>> mychar = ord('a') >>> hexstring = '%.2X' % mychar 

También puede cambiar el número “2” al número de dígitos que desee, y la “X” a “x” para elegir entre la representación en mayúsculas y minúsculas de los dígitos alfanuméricos hexadecimales.

Por muchos, esto se considera el antiguo formato de estilo% en Python, pero me gusta porque la syntax de la cadena de formato es la misma que usan otros lenguajes, como C y Java.

Si estás usando python 3.6 o superior, también puedes usar fstrings:

 v = 10 s = f"0x{v:02x}" print(s) 

salida:

 0x0a 

La syntax de la parte de llaves es idéntica a string.format() , excepto que usa el nombre de la variable. Consulte https://www.python.org/dev/peps/pep-0498/ para obtener más información.

 htmlColor = "#%02X%02X%02X" % (red, green, blue) 

La forma más simple (creo) es:

 your_str = '0x%02X,' % 10 print(your_str) 

imprimirá:

 0x0A 

El número después del% se convertirá en hexadecimal dentro de la cadena, creo que está claro de esta manera y las personas que provienen de un fondo en C (como yo) se sienten más como en casa