Comment créer un objet octets python à partir d'une longue chaîne hexagonale?

StackOverflow https://stackoverflow.com/questions/443967

  •  22-07-2019
  •  | 
  •  

Question

J'ai une longue séquence de chiffres hexadécimaux dans une chaîne, telle que

  

00000000000048484040FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44

seulement beaucoup plus longtemps, plusieurs kilo-octets. Existe-t-il un moyen intégré de convertir cela en un objet octets en python 2.6 / 3?

Était-ce utile?

La solution

Fonctionne dans Python 2.7 et versions supérieures, 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 en tant qu'argument, mais lorsqu'elle est appliquée, l'erreur suivante est généré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`

Autres conseils

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.b2a_hex(obj)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top