Domanda

Ho una lunga sequenza di cifre esadecimali in una stringa, come

  

000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44

solo molto più a lungo, diversi kilobyte. Esiste un modo integrato per convertirlo in un oggetto byte in python 2.6 / 3?

È stato utile?

Soluzione

Funziona in Python 2.7 e versioni successive incluso python3:

result = bytearray.fromhex('deadbeef')

Nota: sembra esserci un errore con la funzione bytearray.fromhex () in Python 2.6. La documentazione di python.org afferma che la funzione accetta una stringa come argomento, ma quando viene applicata viene generato il seguente errore:

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

Altri suggerimenti

result = bytes.fromhex(some_hex_string)

Puoi farlo con il codec esadecimale. vale a dire:

>>> 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'

Prova il modulo binascii

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

binascii.b2a_hex(obj)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top