Lesen mehrerer bytes in Hexadezimal-Datei mit python
Habe ich eine hex-Datei, die angezeigt wird, wie unten:-
00000000 AA AA 11 FF EC FF E7 3E FA DA D8 78 39 75 89 4E
00000010 FD FD BF E5 FF DD FF AA E9 78 67 84 90 E4 87 83
00000020 9F E7 80 FD FE 73 75 78 93 47 58 93 EE 33 33 3F
Will ich Lesen 3. und 4. byte. Tausche diese zwei bytes und speichern Sie in einer Variablen. Für e.g, ich will sparen 0xFF11 (nach byteswap) in der variable "num"
Dies ist, was ich versucht habe:
Ich lese diese zwei bytes nacheinander
data=open('xyz.bin','rb').read()
num1=data[2]
num2=data[3]
num1,num2=num2,num1
num= num1*100+num2
print(num)
Nun das problem ist die variable num integer-Wert, und ich habe keine Ahnung, wie man hex-in.
Ich bin hier hängengeblieben und nicht in der Lage, weiter zu gehen. Jede Hilfe wäre willkommen.
PS: ich bin ganz neu bei python.
Ändern Sie einfach die vorletzte Zeile zu
wenn Sie möchten, Lesen Sie viele zahlen aus einer Datei, könnten Sie
num = (num1 << 8) + num2
oder nicht, tauschen Sie die bytes und verwenden num = (num2 << 8) + num3
.wenn Sie möchten, Lesen Sie viele zahlen aus einer Datei, könnten Sie
array.array
. Siehe Verbessern Sie die Geschwindigkeit von Lesen und konvertieren von Binär-Datei mit pythonInformationsquelleAutor user3469616 | 2014-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst, Sie hätte sich zu vermehren
num1
durch256
natürlich nicht100
(Sie schreiben konnte dezimal256
als0x100
, obwohl, ob das hilft, machen Ihre Absicht klarer).Zweite, für das formatieren einer Ganzzahl als hex-Zahl, verwenden Sie
Beispiel:
InformationsquelleAutor Tim Pietzcker
InformationsquelleAutor Simon Pantzare
In Python 3, Sie konnte erstellen eine integer-direkt von bytes:
InformationsquelleAutor jfs
Möglicherweise interessieren Sie einige/alle der folgenden Operationen, die abstrakte entfernt alle bitweisen der Mathematik, Sie würde sonst zu tun haben.
InformationsquelleAutor roippi
Der Beste Weg, es zu tun ist durch die Verwendung von struct-Modul.
InformationsquelleAutor RejeeshChandran