Golang ist eine fortschrittliche Programmiersprache, die in modernen Webanwendungen, Cloud Computing, Containertechnologie und Microservices weit verbreitet ist. Im Bereich der Datenverarbeitung ist es häufig erforderlich, Daten in große und kleine Enden umzuwandeln. In diesem Artikel werden die Big- und Small-Endian-Konvertierungsmethoden von Golang vorgestellt.
- Was ist Endianness? In Computern hat jeder Datentyp seine eigene Darstellung im Speicher. Die wichtigste davon ist die Bytereihenfolge, die oft als Endianness bezeichnet wird. „Big Endian“ bedeutet, dass das höchste Byte zuerst gespeichert wird, und „Little Endian“ bedeutet, dass das niedrigste Byte zuerst gespeichert wird. Wenn eine 16-Bit-Zahl beispielsweise 0x1234 ist, belegt sie im Big-Endian-Modus zwei Bytes Speicher. Das erste Byte ist 0x12 und das zweite Byte ist 0x34. Im Little-Endian-Modus ist das erste Byte 0x34 Byte ist 0x12.
Big-Endian-Konvertierung in Golang
- In Golang können Sie Big-Endian-Konvertierungsvorgänge über das Binärpaket in der Standardbibliothek durchführen. Das Binary-Paket bietet Funktionen zum Konvertieren zwischen Basistypen und Byte-Arrays, einschließlich Funktionen zum Konvertieren der Big-Endian- und Little-Endian-Bytereihenfolge.
Davon konzentriert sich dieser Artikel auf die folgenden Funktionen:
func LittleEndian.Uint16(b []byte) uint16
- Konvertieren Sie die Little-Endian-Sequenz b in eine Ganzzahl vom Typ uint16.
func LittleEndian.Uint32(b []byte) uint32
- Konvertieren Sie die Little-Endian-Sequenz b in eine Ganzzahl vom Typ uint32.
func LittleEndian.Uint64(b []byte) uint64
- Konvertieren Sie die Little-Endian-Sequenz b in eine Ganzzahl vom Typ uint64.
func LittleEndian.PutUint16(b []byte, v uint16)
- Schreiben Sie die Ganzzahl v vom Typ uint16 in die Little-Endian-Sequenz b.
func LittleEndian.PutUint32(b []byte, v uint32)
- Schreiben Sie die Ganzzahl v vom Typ uint32 in die Little-Endian-Sequenz b.
func LittleEndian.PutUint64(b []byte, v uint64)
- Schreiben Sie die Ganzzahl v vom Typ uint64 in die Little-Endian-Sequenz b.
Für die Konvertierung von Big-Endian-Sequenzen stellt das Binary-Paket auch entsprechende Funktionen bereit. Ersetzen Sie einfach das Funktionsnamen-Präfix von BigEndian durch LittleEndian.
Beispiel für die Little-Endian-Konvertierung
- Nachfolgend geben wir ein Beispiel für die Little-Endian-Konvertierung am Beispiel von uint16.
package main
import (
"encoding/binary"
"fmt"
Nach dem Login kopieren
)
func main() {
src := []byte{0x34, 0x12}
val := binary.LittleEndian.Uint16(src)
fmt.Println(val)
dest := make([]byte, 2)
binary.LittleEndian.PutUint16(dest, val)
fmt.Printf("%x", dest)
Nach dem Login kopieren
}
In diesem Beispiel definieren wir ein Byte-Array src mit einer Länge von 2, das einen Wert vom Typ uint16 enthält, verwenden Sie Binär .LittleEndian.Uint16(src), um es in eine Little-Endian-Sequenz zu konvertieren und die Ausgabe zu drucken. Dann schreiben wir den Wert über binär.LittleEndian.PutUint16(dest, val) in das neue Byte-Array dest und verwenden die Funktion Printf, um seine hexadezimale Darstellung auszugeben. Führen Sie das Programm aus und das Ausgabeergebnis lautet wie folgt:
4660
1234
Sie können sehen, dass der uint16-Typwert 0x1234 in der Little-Endian-Sequenz als 0x3412 dargestellt wird und nach der Rückkonvertierung auf den ursprünglichen Wert zurückgesetzt werden kann .
Zusammenfassung
- Durch die Verwendung der Funktionen des Binärpakets können wir in Golang problemlos Big-Endian-Konvertierungsvorgänge durchführen. In praktischen Anwendungen ist die Endian-Konvertierung eine weit verbreitete Datenkonvertierungsmethode und wird häufig in Computernetzwerken, Speichersystemen, Bildverarbeitung und anderen Bereichen verwendet. Daher wird die Beherrschung der Big- und Small-Endian-Konvertierungsvorgänge von Golang für Entwickler bei der Datenverarbeitung eine große Hilfe sein.
Das obige ist der detaillierte Inhalt vonGolang Big-Endian-Konvertierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!