2017-07-25 4 views
0

Ich suche, ob es eine Möglichkeit gibt, automatisch ein 1s Kompliment zu machen oder die Bits in einer Datei oder Dateien umzukehren. Ich habe es geschafft, eine Datei im Binärformat zu öffnen, indem ich die Syntax "file = open ('001.a', 'rb')" benutzte und dann beim Durchsuchen des Stack-Überlaufs eine while-Schleife fand, um zu iterieren.1s Kompliment für alle Dateien in einem Verzeichnis

Wenn ich dem gelesenen Teil der Datei eine Variable so z. a = file.read() und dann tippen Sie auf a [1] erscheint es als Typ 'str'.

Ich bin verwirrt als Wenn ich diese Datei als eine Binärdatei öffnete, dann sollte nicht alles in 1 und 0 angezeigt werden.

Tut mir leid, ich bin wirklich neu in der Programmierung und bin total verloren. Ich habe viele Beispiele durchforstet und angeschaut, aber keine von ihnen scheint eine vollständige Lösung zu bieten und das Auswählen und Mischen von Code aus verschiedenen Posts funktioniert nicht, da ich immer wieder Typfehler erhalte. Ich habe versucht, struct zu verwenden, aber verstehe einfach nicht die Syntax oder was soll es erreichen.

Ich würde denken, dass ich diese Zeichenfolge in eine binäre von 1 und 0s konvertieren muss und dann irgendwie alle 0 zu 1 und 1 zu 0's umdrehen, aber es scheint einfacher zu sein, sagte dann getan.

a [10] '\ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff'

Dank

Antwort

0

wäre so etwas wie dies tun:

with open("/tmp/xyzzy.tmp", "rb") as fp: 
    q = fp.read() 

nf = open("/tmp/xyzzy.new", "ab")  
for i in q: 
    newbyte = ord(i)^255 
    nf.write(chr(newbyte)) 

nf.close() 

Es dreht sich nur byteweise durch Ihre Daten und dreht Bits wie es geht.

+0

Vielen Dank dafür. Ich werde es ein bisschen probieren. Ich habe nur 2 Fragen. 1) Wenn Sie die Datei mit "rb" öffnen, soll es in binär geöffnet werden. Ich nehme an, dass, wenn Sie q drucken, es die 0 und 1's drucken sollte, aber es scheint, dass es das nicht tut. Sollte die Datei nicht binär sein? Ich benutze Python 2.7 2) Es scheint, dass die Variable q zugewiesen ist, um die gesamte Datei zu lesen, dann, wie es auf einem Byte funktioniert. Ich meine, wenn Sie q drucken, wird die gesamte Datei ausgedruckt. – Ned

+0

Der obige Code funktioniert nicht für mich. Wenn ich nf.close() eintippe gibt es einen Syntaxfehler: ungültige Syntax in idleFile "", Zeile 4 mit einem Zeiger auf nf.close(). Tx – Ned

+0

https://stackoverflow.com/questions/9644110/difference-between-parsing-a-text-file-in-r-and-rb-mode Dies ist eine Erklärung des binären Modus. – Hannu

Verwandte Themen