2010-11-26 18 views
3

J'ai des données hexadécimales dans une chaîne. Je dois pouvoir analyser l'octet de chaîne par octet, mais en lisant les documents, la seule façon d'obtenir des données par octet est la fonction f.read (1). Comment puis-je analyser une chaîne de caractères hexadécimaux, soit dans une liste, ou dans un tableau, ou une structure où je peux accéder octet par octet. Les données seront une liste où chaque élément est un caractère de la chaîne.Lecture d'octets à partir d'une chaîne Python

Répondre

0
mystring = "a1234f" 
data = list(mystring) 

3
a = 'somestring' 
print a[0]  # first byte 
print ord(a[1]) # value of second byte 

(x for x in a) # is a iterable generator 
3

Vous pouvez parcourir une chaîne comme vous le feriez pour n'importe quelle autre séquence.

for c in 'Hello': 
    print c 
7

Il ressemble à ce que vous pourriez vraiment envie (Python 2.x) est:

from binascii import unhexlify 
mystring = "a1234f" 
print map(ord,unhexlify(mystring)) 

[161, 35, 79]

Cette convertit chaque paire de caractères hexadécimaux dans sa représentation entière.

3.x Python, vous pouvez faire:

>>> list(unhexlify(mystring)) 
[161, 35, 79] 

Mais depuis le résultat de unhexlify est une chaîne d'octets, vous pouvez aussi simplement accéder aux éléments:

>>> L = unhexlify(string) 
>>> L 
b'\xa1#O' 
>>> L[0] 
161 
>>> L[1] 
35 
+0

+1 pour la lecture entre les lignes. –