Python, wie man 32-bit-Ganzzahl in byte-array

Ich normalerweise Dinge wie diese in C++, aber ich bin mit python zu schreiben, eine schnelle Skript und ich habe in eine Wand laufen.

Wenn ich eine binäre Liste (oder was auch immer python speichert das Ergebnis von "fread"). Kann ich den Zugriff auf die einzelnen bytes mit: buffer[0], Puffer[1], etc.

Muss ich ändern das Byte [8-11] zu halten, eine neue 32-bit-Datei-Größe (gelesen: es gibt bereits eine Datei gibt, die ich brauche, um ihn zu aktualisieren). In C++ würde ich einfach einen Zeiger auf den Ort und werfe es vor die Speicherung der integer, aber mit python habe ich plötzlich merkte, ich habe keine Ahnung, wie zu tun etwas wie dieses.

Wie kann ich das update 4 bytes in mein Puffer an einem bestimmten Ort zu halten, den Wert einer Ganzzahl in python?

BEARBEITEN

Werde ich weitere hinzufügen, weil ich kann nicht scheinen, um es herauszufinden, aus den Lösungen (obwohl ich kann sehen, dass Sie auf der richtigen Spur sind).

Zuerst von alle, bin ich auf python 2.4 (und kann nicht aktualisieren, großen Unternehmens-Servern) - so dass offenbar die Grenzen meiner Möglichkeiten. Sorry für nicht zu erwähnen, dass früher, ich war nicht bewusst, es hatte so viele weniger Funktionen.

Zweitens, wir machen diese ultra-einfach.

Können sagen, ich habe eine Binär Datei mit dem Namen 'MeineDatei.binary' mit dem fünf-byte Inhalt '4C53535353' in hex - dies entspricht der ascii-Repräsentation für den Buchstaben "L" und 4xS" allein in die Datei.

Wenn ich das Tue:

f = open('myfile.binary', 'rb')
contents = f.read(5)

Inhalt sollte (von Sven Marnach Antwort) halten Sie eine fünf-byte-unveränderliche Zeichenfolge.

Mit Python 2.4 Einrichtungen nur, wie konnte ich wechseln, die 4 S statt, die in 'Inhalt' zu einem beliebigen integer-Wert? I. e. geben Sie mir eine code-Zeile, dass kann byte-Indizes Inhalt [1-4] enthalten die 32-bit-integer 'myint' mit Wert 12345678910.

Sie können nicht ändern, den Inhalt, da der string ist unveränderlich ... Sie können erstellen Sie eine neue Zeichenfolge, oder verwenden Sie eine veränderliche container wie bytearray.
Danke, ich bin froh, erstellen Sie einen neuen string oder byte-array, wenn das der Fall ist. Wie könnte ich eine veränderbare byte-array mit der gleichen contnets, und aktualisieren Sie die Palette [1-4], die gleich der binären Darstellung meiner ganze Zahl?
Erweiterte ich mein posting unten und enthalten ein Beispiel für Python 2.4 🙂

InformationsquelleAutor John Humphreys - w00te | 2011-10-27

Schreibe einen Kommentar