Python: Lesen hex-aus Datei in die Liste?
Gibt es eine einfache Möglichkeit, in Python, Lesen einer Datei die Hex-Daten in eine Liste, sagen hex
?
So hex
wäre diese:
hex = ['AA','CD','FF','0F']
Ich will nicht Lesen müssen, in einen string, dann split. Dies ist speicherintensiv bei großen Dateien.
- Sie haben einen Tupel gibt es, nicht eine Liste.
- sorry, werde korrigieren
- http://stackoverflow.com/questions/3964245/convert-file-to-hex-string-python Dies ist nicht eine genaue Antwort wird aber wahrscheinlich schieben Sie Sie in die richtige Richtung.
- Wollen Sie die Daten der Datei als String oder als Integer? Ihre Probe-Ausgabe wird jedes byte als string von zwei hex-Zeichen, aber das scheint weniger hilfreich als eine Liste von Ganzzahlen.
- dies kann hilfreich sein, Q&A
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgabe
Nur ändern
s
zuopen(filename).read()
und Sie sollte gut sein.Oder, wenn Sie nicht wollen, halten Sie die gesamte Liste im Speicher auf einmal für große Dateien.
und um die Werte, halten, ruft
um alle verbleibenden Werte, die vom generator
hex_list
einen generator wenn Sie, dass betroffene darüber[ ]
zu( )
. Es ist derzeit genannt list-comprehension. Ändern Sie zu Klammern und Sie haben eine generator-comprehension.next
Anrufe innerhalb einertry..except StopIteration
.fp.read()
Lesen der gesamten Eingabe-Datei in den Speicher überhaupt? Auch: wenn die Datei ist eine Reine Sequenz von binären Daten (ich habe einfach versucht, mit den gegebenen zahlen), erhalten Sie möglicherweise die FehlermeldungUnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 0: invalid start byte
, denn Sie öffnen die Datei intext
- Modus. Ich bin mit python 3Mit Python 3, nehmen wir an, die Eingabe-Datei enthält die Probe bytes, die Sie zeigen. Zum Beispiel, wir können es schaffen, wie dies
Nun, da wir wollen, dass die hex-Darstellung jedes byte der Eingabedatei, es wäre schön, öffnen Sie die Datei im binary-Modus, ohne zu versuchen, zu interpretieren, deren Inhalt als Zeichen/Zeichenfolgen (oder wir können die Reise auf den Fehler
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 0: invalid start byte
)Wenn die Datei groß ist, könnten wir Lesen wollen, ein Zeichen zu einem Zeitpunkt oder in Blöcken. Für diesen Zweck empfehle ich zu Lesen dieses Q&A
Bewusst sein, dass für die Anzeige hexadezimale dumps von Dateien, gibt es Dienstprogramme, die verfügbar sind auf den meisten Betriebssystemen. Wenn alles, was Sie tun möchten, ist hex-dump der Datei, sollten Sie eines dieser Programme:
od
(octal dump, die eine-x
oder-t x
option)hexdump
xd
- Dienstprogramm unter windows