2010-11-26 3 views
3

Ich habe hex Daten in einer Zeichenfolge. Ich muss in der Lage sein, die Zeichenfolge Byte für Byte zu analysieren, aber durch das Lesen der Dokumente ist die einzige Möglichkeit, Daten byteweise zu erhalten, die f.read (1) -Funktion.Lesen von Bytes aus Python String

Wie analysiere ich eine Zeichenfolge von Hex-Zeichen, entweder in eine Liste oder in ein Array oder eine Struktur, auf die ich byteweise zugreifen kann.

Antwort

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

Daten werden eine Liste sein, in der jedes Element ein Zeichen aus der Zeichenfolge ist.

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

Sie können wie alle anderen Sequenzen durch eine Zeichenfolge iterieren.

for c in 'Hello': 
    print c 
7

Es klingt wie, was Sie vielleicht wirklich wollen (Python 2.x) ist:

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

[161, 35, 79]

Dieser wandelt jedes Paar Hexadezimalzeichen in seine Ganzzahldarstellung.

In Python 3.x können Sie tun:

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

Aber da das Ergebnis der unhexlify ein Byte-String ist, können Sie auch die Elemente zugreifen gerade:

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

+1 für das Lesen zwischen den Zeilen. –