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?

Foi útil?

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
scroll top