J'ai une longue séquence de chiffres hexadécimaux dans une chaîne, comme
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44
seulement beaucoup plus longtemps, plusieurs kilo-octets. Existe-t-il un moyen intégré de le convertir en un objet octets dans python 2.6/3?
Fonctionne en Python 2.7 et supérieur, y compris python3:
result = bytearray.fromhex('deadbeef')
Remarque: Il semble y avoir un bogue avec la fonction bytearray.fromhex()
dans Python 2.6. La documentation de python.org indique que la fonction accepte une chaîne comme argument, mais lorsqu'elle est appliquée, l'erreur suivante est levée:
>>> bytearray.fromhex('B9 01EF')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`
result = bytes.fromhex(some_hex_string)
Vous pouvez le faire avec le codec hexadécimal. c'est à 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'
Essayez le module binascii
from binascii import unhexlify
b = unhexlify(myhexstr)
import binascii
binascii.a2b_hex(hex_string)
C'est comme ça que je l'ai fait.