


Detaillierte Einführung in die Funktionen struct.pack() und struct.unpack() in Python
Die Struktur in Python wird hauptsächlich zum Verarbeiten von C-Strukturdaten verwendet. Beim Lesen wird sie zunächst in den String-Typ von Python und dann in den strukturierten Typ von Python, z. B. Tupel, konvertiert. Im Allgemeinen stammen die Eingabekanäle aus Dateien oder Netzwerk-Binärströmen.
1.struct.pack() und struct.unpack()
Im Konvertierungsprozess wird hauptsächlich eine Formatzeichenfolge verwendet Format.
Lassen Sie uns über die Hauptmethoden sprechen:
1.1 struct.pack(fmt,v1,v2,...)
Geben Sie v1, v2 und andere Parameter ein. Der Wert ist In einer Schicht verpackt, und die Verpackungsmethode wird durch fmt angegeben. Die verpackten Parameter müssen strikt mit fmt übereinstimmen. Schließlich wird als umschlossene Zeichenfolge zurückgegeben.
1.2 struct.unpack(fmt,string)
Wie der Name schon sagt, entpacken. Zum Beispiel wird pack verpackt und dann kann unpacked zum Auspacken verwendet werden. Gibt ein Tupel (Tupel) zurück, das durch Entpacken von Daten (Zeichenfolge) erhalten wurde. Auch wenn nur ein Datenwert vorhanden ist, werden diese in ein Tupel entpackt. Unter diesen muss len(string) gleich calcsize(fmt) sein, was eine calcsize-Funktion beinhaltet. struct.calcsize(fmt): Hiermit wird die Größe der im fmt-Format beschriebenen Struktur berechnet.
Die Formatzeichenfolge besteht aus einem oder mehreren Formatzeichen. Die Beschreibung dieser Formatzeichen finden Sie im Python-Handbuch wie folgt:
Format | c Type | Python | Note |
---|---|---|---|
x | pad byte | no value | |
c | char | string of length 1 | |
b | signedchar | integer | |
B | unsignedchar | integer | |
? | _Bool | bool | (1) |
h | short | integer | |
H | unsignedshort | integer | |
i | int | integer | |
I | unsignedint | integer or long | |
l | long | integer | |
L | unsignedlong | long | |
q | longlong | long | (2) |
Q | unsignedlonglong | long | (2) |
f | float | float | |
d | double | float | |
s | char[] | string | |
p | char[] | string | |
P | void* | long |
2. Codebeispiel
import struct # native byteorder buffer = struct.pack("ihb", 1, 2, 3) print repr(buffer) print struct.unpack("ihb", buffer) # data from a sequence, network byteorder data = [1, 2, 3] buffer = struct.pack("!ihb", *data) print repr(buffer) print struct.unpack("!ihb", buffer) Output: '\x01\x00\x00\x00\x02\x00\x03' (1, 2, 3) '\x00\x00\x00\x01\x00\x02\x03' (1, 2, 3)
Code anzeigen
Zuerst Parameter 1,2,3 ändern Vor dem Packen gehören 1,2,3 offensichtlich zur Ganzzahl im Python-Datentyp. Nach dem Packen wird es zu einer C-strukturierten Binärzeichenfolge, die als „x01x00x00x00x02x00x03“ angezeigt wird. Da es sich bei dieser Maschine um eine Little-Endian-Maschine handelt, finden Sie hier Informationen zum Unterschied zwischen Big-Endian und Little-Endian. Daher werden die hohen Bits im unteren Adresssegment platziert. i stellt den int-Typ in der C-Struktur dar Diese Maschine belegt 4 Bits, 1. Ausgedrückt als 01000000; Es wird als 03 ausgedrückt. Die Konvertierung der Struktur ist ebenfalls ähnlich. Sie können sich auch auf das Handbuch des offiziellen Dokuments beziehen.
optionales Zeichen zur Bestimmung von Big Endian und Little Endian. Die Liste lautet wie folgt:
Wenn nicht angehängt, ist der Standardwert @. Auch wenn die native Zeichenreihenfolge (Big Endian oder Little Endian) verwendet wird, stimmen die Größe der C-Struktur und die Ausrichtung im Speicher mit der nativen Maschine (nativ) überein Beispiel: Die Ganzzahl einiger Maschinen beträgt 2 Bits, während einige Maschinen vier Bits haben; einige Maschinenspeicher haben vier ausgerichtete Bits und einige haben n ausgerichtete Bits (n ist unbekannt, und ich weiß nicht, wie viele).
Es gibt auch eine Standardoption, die wie folgt beschrieben wird: Wenn Standard verwendet wird, gibt es für keinen Typ eine Speicherausrichtung.
Beispielsweise ist in der zweiten Hälfte des Applets gerade das erste Bit in der verwendeten Formatzeichenfolge! Dies ist die Standardausrichtung im Big-Endian-Modus. Die Ausgabe lautet also „x00x00x00x01x00x02x03“, wobei das High-Bit selbst im High-Adress-Bit des Speichers platziert wird.
Eine ausführlichere Einführung in die Funktionen struct.pack() und struct.unpack() in Python finden Sie auf der chinesischen PHP-Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Fastapi ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...
