¿Cómo crear un objeto de bytes de python a partir de una cadena hexadecimal larga?

StackOverflow https://stackoverflow.com/questions/443967

  •  22-07-2019
  •  | 
  •  

Pregunta

Tengo una secuencia larga de dígitos hexadecimales en una cadena, como

  

000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44

solo mucho más tiempo, varios kilobytes. ¿Hay alguna forma integrada de convertir esto en un objeto de bytes en Python 2.6 / 3?

¿Fue útil?

Solución

Funciona en Python 2.7 y superior, incluido python3:

result = bytearray.fromhex('deadbeef')

Nota: parece haber un error con la función bytearray.fromhex () en Python 2.6. La documentación de python.org indica que la función acepta una cadena como argumento, pero cuando se aplica, se produce el siguiente error:

>>> bytearray.fromhex('B9 01EF')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`

Otros consejos

result = bytes.fromhex(some_hex_string)

Puede hacer esto con el códec hexadecimal. es decir:

>>> s='000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44'
>>> s.decode('hex')
'\x00\x00\x00\x00\x00\x00HB@\xfa\x06=\xe5\xd0\xb7D\xad\xbe\xd6:\x81\xfa\xea9\x00\x00\xc8B\x86@\xa4=P\x05\xbdD'

Pruebe el módulo binascii

from binascii import unhexlify
b = unhexlify(myhexstr)
import binascii

binascii.b2a_hex(obj)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top