Ich habe eine Binärdatei, die ich lese, wo einige 2-Byte-Werte in umgekehrter Byte-Reihenfolge (Little Endian?) gespeichert sind, zB
%Vor%Das ursprüngliche Programm, das diese Werte erstellt hat, speichert sie intern als Kurzform. Diese Werte sollten entsprechen: 29, 19, 39, 59, 69, 49, 79. Ich versuche, diese Werte mit Python 2.6.5 zu lesen (obwohl dies wahrscheinlich auf viel älteren Systemen ausgeführt wird, zB 2.3 und 2.4) .
Ich habe versucht,
zu verwenden %Vor%und natürlich sind alle Werte falsch:
%Vor%Nachdem ich die Dokumentation von struct angeschaut habe, dachte ich, ich könnte etwas wie
verwenden %Vor%Aber beim Testen habe ich nur
%Vor%Wie kann ich diese Werte mit der richtigen Byte-Reihenfolge entpacken? Bin ich fest, in den zwei Bytes getrennt lesend, dann sie in den Python-Code wieder zusammensetzend?
Die Byte-Reihenfolge wird mit einem einzelnen Zeichen am Anfang der Formatzeichenfolge angegeben.
%Vor%Wie wäre es mit
? >>> a='\x1d\x00\x13\x00\x27\x00\x3b\x00\x45\x00\x31\x00\x4f\x00'
>>> struct.unpack('<%dH' % (len(a) / 2), a)
(29, 19, 39, 59, 69, 49, 79)
?
Laut der Struktur -Dokumentation sieht es so aus, als müssten Sie <
verwenden Spezifiziere Little-Endian.