¿Cómo crear un objeto de bytes de python a partir de una cadena hexadecimal larga?
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?
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