231 votes

tableau de chaînes hexadécimales vers octets en python

J'ai une longue chaîne Hex qui représente une série de valeurs de différents types. Je souhaite convertir cette chaîne hexagonale en un tableau d'octets afin de pouvoir décaler chaque valeur et la convertir en son type de données approprié.

378voto

tzot Points 32224

Supposons que votre chaîne hexagonale ressemble

>>> hex_string = "deadbeef"

Convertir en chaîne (Python ≤ 2.7) :

>>> hex_data = hex_string.decode("hex")
>>> hex_data
"\xde\xad\xbe\xef"

ou depuis Python 2.7 et Python 3.0 :

>>> bytes.fromhex(hex_string)  # Python ≥ 3
b'\xde\xad\xbe\xef'

>>> bytearray.fromhex(hex_string)
bytearray(b'\xde\xad\xbe\xef')

Notez que bytes est une version immuable de bytearray.

165voto

kugg Points 311

Il y a une fonction intégrée dans le bytearray qui fait ce que vous voulez.

bytearray.fromhex("de ad be ef 00")

Il renvoie un bytearray et lit des chaînes hexagonales avec ou sans séparateur d'espace.

20voto

Bruce Points 4241

si j'ai bien compris, vous devriez rechercher binascii.unhexlify

import binascii
a='45222e'
s=binascii.unhexlify(a)
b=[ord(x) for x in s]

2voto

velsim Points 149

Vous pouvez utiliser le module Codecs dans la bibliothèque Python Standard, c'est-à-dire

import codecs

codecs.decode(hexstring, 'hex_codec')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X