Come creare un oggetto Python Byte da una lunga stringa esadecimale?
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?
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