Die Go-Sprache ist standardmäßig Big Endian. Im Allgemeinen kann die Bytereihenfolge der Netzwerkübertragung Big-Endian oder Little-Endian sein, abhängig von den Protokollbestimmungen der Kommunikationsparteien beim Start der Software. Das TCP/IP-Protokoll RFC1700 schreibt die Verwendung der „Big-Endian“-Byte-Reihenfolge als Netzwerk-Byte-Reihenfolge vor. Diese Regel muss während der Entwicklung befolgt werden, Golang verwendet standardmäßig die Big-Endian-Reihenfolge.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
1. Übersicht
Byte-Reihenfolge: Die Reihenfolge der Bytes beim Speichern im Computer und die Reihenfolge der Eingabe/Ausgabe beziehen sich auch auf die Reihenfolge der Bytes (Bytes) zum Speichern von Multibyte-Daten die Art und Weise, wie Ganzzahlen im Speicher gespeichert werden und die Reihenfolge, in der sie über das Netzwerk übertragen werden.
Schauen wir uns zunächst die Grundkonzepte an:
1. Big-Endian-Modus (Big Endian): Speichern Sie die höherwertigen Bytes an der Startadresse (speichern Sie die höherwertigen Bytes der Daten in den niederwertigen). in der Reihenfolge von niedriger Adresse zu hoher Adresse) Bytes)
2. Little-Endian-Modus (Little Endian): Speichern Sie die niederwertigen Bytes an der Startadresse (speichern Sie die niederwertigen Bytes in den höherwertigen Bytes von die Daten in der Reihenfolge von der niedrigen zur hohen Adresse)
Im Computerbereich hängt Endianness mit der Hardwarearchitektur zusammen.
Zum Beispiel: Beispiel: Eine Variable a = 0x11223344, das höchste Byte dieser Variablen ist 0x11 und das niedrigste Byte ist 0x44. Gehen Sie davon aus, dass die Adressen im Speicher wie folgt zugewiesen werden (die Adressen sind alle aufeinanderfolgend):
Im Big- und Small-Endian-Modus werden die Inhalte wie folgt gespeichert
(1) Speicherung im Big-Endian-Modus (Speicheradresse beträgt 16 Bit)
Adressdaten
0x0004 (hohe Adresse) 0x44
0x0003 0x33
0x0002 0x22 003 0x220x0002 0 x33 0x0001( Niedrige Adresse) 0x44 2. Big-Endian und Little-Endian
Die Definition von Big-Endian und Big-Endian wurde zuvor kurz erläutert und anhand einfacher Beispiele erläutert. Als nächstes werden detaillierte Beispiele gegeben Zur Veranschaulichung:
1. Big-Endian: Oder Big-Endian-Reihenfolge
Ein Typ: die Speichersituation der int32-Zahl 0X0A0B0C0D
Die Daten sind in 8 Bits
Im Beispiel , das höchste Das gültige Bit besteht darin, 0x0A an der niedrigsten Speicheradresse zu speichern, gefolgt von 0x0B an nachfolgenden Adressen, ähnlich der Reihenfolge der hexadezimalen Bytes von links nach rechts.
Die Daten liegen in 16 Bit vor. Die höchste 16-Bit-Einheit 0x0A0B wird in den unteren Bits gespeichert. Little-Endian: Oder Little-Endian. Die Daten liegen in 8 Bit vor Im Beispiel ist das niedrigstwertige Bit die bei 0x0D gespeicherte Speicheradresse und wird der Reihe nach an den nachfolgenden Adressen gespeichert. Daten liegen in Einheiten von 16 Bit vor
Die niedrigste 16-Bit-Einheit 0x0C0D wird im unteren Bit gespeichert.
3. Zusammenfassung
Eine CPU mit Big-Endian-Reihenfolge und eine CPU mit Little-Endian-Reihenfolge sind nicht nur hinsichtlich der Bytes, sondern auch hinsichtlich der Bits gegensätzlich.
Zum Beispiel die Speicherung von 0x01 im Speicher 00000 00000000 00000000 00000001 Hohe SpeicherbitsLittle Endian: Niedrige Speicherbits 10000000 00000000 00000000 00000000 Hohe Speicherbits
Anwendung
Tatsächlich sind die oben aufgeführten Dinge letztendlich für die Schritt Es geht um die Entscheidungen, wenn es kommt zur Netzwerkübertragung und Dateispeicherung in Golang. Im Allgemeinen kann die Bytereihenfolge der Netzwerkübertragung Big-Endian oder Little-Endian sein, abhängig von den Protokollbestimmungen der Kommunikationsparteien beim Start der Software. Das TCP/IP-Protokoll RFC1700 schreibt die Verwendung der „Big Endian“-Bytereihenfolge als Netzwerk-Bytereihenfolge vor, und diese Regel muss während der Entwicklung befolgt werden. Standardmäßig verwendet Golang die Big-Endian-Reihenfolge. Einzelheiten finden Sie im Codierungs-/Binärpaket in Golang, das die Verwendung der Big- und Little-Endian-Reihenfolge ermöglicht Der RPC-Aufrufprozess wird im Big-Endian-Modus codiert
Das obige ist der detaillierte Inhalt vonDie Go-Sprache verwendet standardmäßig Big Endian oder Little Endian. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!