2016-07-04 8 views
-1

Was ist der einfachste Weg, um den zugrunde liegenden Binärcode (0s und 1s) für eine bestimmte Datei zu erhalten? Der Kontext für diese Frage ist, dass ich eine Python-Funktion haben möchte, die einen Dateinamen annimmt, ihn nachschlägt und den Binärcode für diese Datei sammelt, bevor er sie irgendwo speichert oder zurückgibt. Danach möchte ich einige Manipulationen an der Binärdatei vornehmen.Einfache Möglichkeit zum Anzeigen und Speichern der Binärdatei einer Datei?

+1

Es gibt keine zugrunde liegenden 0s und 1s für eine bestimmte Datei, es ist eine Idee der Verwirrung. Wenn Sie ein Programm schreiben wollen, das ein einzelnes Bit von Binärdaten als * 8-Bit-ASCII-Zeichen Eins und Null * darstellt, können Sie es sicherlich tun. Aber es geht nicht darum, * die zugrunde liegenden Daten so zu betrachten, wie sie wirklich sind *, sondern "* eine mögliche Repräsentation zu berechnen *". Und wenn du das tust ... "Jeder" macht das in Hex, weil es ein direkteres, präziseres Mapping ist. Wie hier argumentiert: http://StackOverflow.com/Questions/37103607/ und dann ist es ein Duplikat, z.B. http://stackoverflow.com/a/2894216/478656 – TessellatingHeckler

Antwort

1

Der zugrunde liegende Code für eine Datei ist aus der Methode .read() des Dateiobjekts verfügbar. Verwenden Sie den b Modus Modifikator, wenn Sie die Datei öffnen:

with open("input_file.bin", "rb") as input_file: 
    bits = input_file.read() 

Wenn Sie wollen einfach die Bits manipulieren, nachdem sie beim Lesen, könnten Sie wollen, dass sie konvertieren zu einem bitarray:

from bitarray import bitarray 
with open("input_file.bin", "rb") as input_file: 
    chars = input_file.read() 

bits = bitarray() 
bits.frombytes(chars) 
print bits.count(1), bits.count(0) 

Referenzen: