Python struct pack, unpack
Das Python struct-Modul kann die Konvertierungen zwischen den Python-Werten und C-Structs durchführen, die als Python-Strings dargestellt werden.
Python Struktur
- Das Python struct-Modul kann verwendet werden, um binäre Daten zu verarbeiten, die in Dateien, Datenbanken oder über Netzwerkverbindungen usw. gespeichert sind.
- Es verwendet Format-Strings als kompakte Beschreibungen des Layouts der C-Strukturen und der beabsichtigten Konvertierung zu/von Python-Werten.
Python Strukturfunktionen
Es gibt fünf wichtige Funktionen im struct-Modul - pack(), unpack(), calcsize(), pack_into() und unpack_from(). Bei all diesen Funktionen müssen wir das Format der Daten angeben, die in binär umgewandelt werden sollen. Einige der gängigen Formatzeichen sind:
?: boolean
h: short
l: long
i: int
f: float
q: long long int
Hier können Sie die vollständige Liste der Formatzeichen finden. Lassen Sie uns die Funktionen des struct-Moduls einzeln betrachten.
Python struct.pack()
Diese Funktion packt eine Liste von Werten in eine String-Darstellung des angegebenen Typs. Die Argumente müssen genau mit den Werten übereinstimmen, die im Format benötigt werden. Lassen Sie uns schnell ein Beispiel für struct pack() ansehen:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
var = struct.pack('iii', 10, 20, 30)
print(var)
Wenn wir dieses Skript ausführen, erhalten wir die folgende Darstellung:
Beachten Sie, dass 'b' in der Ausgabe für binär steht.
Python struct.unpack()
Diese Funktion entpackt den gepackten Wert in seine ursprüngliche Darstellung im angegebenen Format. Diese Funktion gibt immer ein Tupel zurück, selbst wenn es nur ein Element gibt. Lassen Sie uns schnell ein Beispiel für die Funktion struct unpack() ansehen:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print(struct.unpack('hhl', var))
Wenn wir dieses Skript ausführen, erhalten wir unsere ursprüngliche Darstellung zurück:
Klarerweise müssen wir dem Python-Interpreter das Format mitteilen, in das wir die Werte entpacken möchten.
Python struct calcsize()
Diese Funktion berechnet und gibt die Größe der String-Darstellung der Struktur mit einem gegebenen Format zurück. Die Größe wird in Bytes berechnet. Lassen Sie uns schnell ein Beispiel-Code-Snippet ansehen:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print("Size of String representation is {}.".format(struct.calcsize('hhl')))
Wenn wir dieses Skript ausführen, erhalten wir die folgende Darstellung:
Python struct pack_into(), unpack_from()
Diese Funktionen ermöglichen es uns, die Werte in einen Zeichenpuffer zu packen und aus einem Zeichenpuffer zu entpacken. Diese Funktionen wurden in Version 2.5 eingeführt.
import struct
ctypes is imported to create a string buffer
import ctypes
As shown in previous example
size = struct.calcsize('hhl')
print(size)
Buffer 'buff' is created from ctypes
buff = ctypes.create_string_buffer(siz)
struct.pack_into() packs data into buff and it doesn't return any value
struct.unpack_from() unpacks data from buff, returns a tuple of values
print(struct.pack_into('hhl', buff, 0, 5, 10, 15))
print(struct.unpack_from('hhl', buff, 0))
Wenn wir dieses Skript ausführen, erhalten wir die folgende Darstellung:
Das ist alles für eine kurze Einführung in das Python struct Modul.




