Seite 1 von 1

Hex string in Nummer umwandeln

Verfasst: Mittwoch 3. Mai 2006, 12:25
von rumilmirion
Tag allesamt. Bin noch ziemlich unerfahren, was python angeht, also vergebt bitte die warscheinlich doofe Frage. Ich schreibe zur Zeit ein Programm zum Auslesen bestimmter Daten von einer Datei. Die benötigten Daten haben unterschiedliche Länge, welche direkt davor angegeben ist. Beim Auslesen schaut diese Länge z.B. so aus: '\xab\x01\x00\x00', ist daher ein string. Diesen string brauche ich als Nummer, nur genau das krieg ich das nicht hin. Int() geht ja nicht, die will ja nen integer als input. Wie krieg ich das dann hin?

Re: Hex string in Nummer umwandeln

Verfasst: Mittwoch 3. Mai 2006, 12:32
von gerold
rumilmirion hat geschrieben:Diesen string brauche ich als Nummer,
Hi rumilmirion!

Meinst du so etwas?

Code: Alles auswählen

s = "\xab\x01\x00\x00"
for char in s: 
    print ord(char)
mfg
Gerold
:-)

Verfasst: Mittwoch 3. Mai 2006, 12:43
von rumilmirion
Hmm...das funktioniert zwar theoretisch, aber wie ich gerade feststellte, ist das Format meiner Datei da etwas komisch. Den string '\xab\x01\x00\x00' hab ich nicht erfunden, der kam wirklich dabei raus. Nach dem Code würde man ja 127+1 erhalten...hab in nem hex editor nachgeschaut, da ist die Länge der Daten die ich will 427 bytes...was laut hex() 0x1ab ist. Also müsste man aus '\xab\x01\x00\x00' \x1ab machen. So weit schon mal danke, wenigstens weiss ich jetzt, was mit dieser Datei los ist. Irgendeine Idee, wie ich den Rest machen könnte und die wirkliche Länge rauskriegen könnte?

Verfasst: Mittwoch 3. Mai 2006, 13:51
von Joghurt
0x1ab ist ein Word, also zwei Byte. Und Intel speichert diese im Little-Endian-Format. (Lowest byte first)

Dementsprechend wird 0x1ab als 0xab 0x01 abgespeichert. Und dies ist in deinem String ja auch der Fall.

Für das, was du vorhast, gibt es struct

Verfasst: Mittwoch 3. Mai 2006, 13:57
von rumilmirion
Ah ja, so geht das also. Danke vielmals!