Como criar python bytes objeto de string hexadecimal tempo?
Pergunta
Eu tenho uma longa seqüência de dígitos hexadecimais em uma string, como
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44
só que muito mais longos, vários kilobytes. Existe uma maneira embutida para converter isso em uma bytes objeto em python 2,6 / 3?
Solução
Obras em Python 2.7 e superior, incluindo python3:
result = bytearray.fromhex('deadbeef')
Nota: Não parece ser um bug com a função bytearray.fromhex()
em Python 2.6. Os estados de documentação python.org que a função aceita uma string como um argumento, mas quando aplicado, o seguinte erro é lançado:
>>> bytearray.fromhex('B9 01EF')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`
Outras dicas
result = bytes.fromhex(some_hex_string)
Você pode fazer isso com o codec hex. ou seja:
>>> 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'
Tente o binascii módulo
from binascii import unhexlify
b = unhexlify(myhexstr)
import binascii
binascii.b2a_hex(obj)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow