Heim > Artikel > Backend-Entwicklung > Wie konvertiere ich numerische Typen in []Byte und zurück in Go?
In Go können Sie vorzeichenlose Ganzzahlen in ein Byte-Array konvertieren, indem Sie die Methoden Uint16() und Uint32() von verwenden die Typen „binary.BigEndian“ und „binary.LittleEndian“. Möglicherweise ist Ihnen jedoch aufgefallen, dass es keine entsprechenden Int16()- oder Float32()-Methoden gibt.
Endianness bezieht sich auf die Reihenfolge, in der Bytes für einen bestimmten Wert im Speicher gespeichert werden numerischer Typ. Das Binärpaket von Go bietet Funktionen zum Konvertieren zwischen verschiedenen Endiannesses.
Um eine vorzeichenlose Ganzzahl in eine vorzeichenbehaftete Ganzzahl umzuwandeln, können Sie eine einfache Typkonvertierung verwenden. Das Speicherlayout einer vorzeichenlosen 16-Bit-Ganzzahl (uint16) und einer vorzeichenbehafteten 16-Bit-Ganzzahl (int16) ist dasselbe. Daher können Sie die folgende Konvertierung durchführen:
<code class="go">a := binary.LittleEndian.Uint16(sampleA) a2 := int16(a)</code>
Diese Konvertierung ändert nicht die Speicherdarstellung, sondern nur den Typ.
Konvertierung Die Umwandlung vorzeichenloser Ganzzahlen in Gleitkommazahlen ist etwas aufwändiger. Das Mathematikpaket von Go bietet Funktionen zum Konvertieren zwischen vorzeichenlosen Ganzzahlen und Gleitkommazahlen, wie zum Beispiel math.Float32frombits() und math.Float64frombits().
<code class="go">a := binary.LittleEndian.Uint64(sampleA) a2 := math.Float64frombits(a)</code>
Diese Konvertierung manipuliert den Speicherwert nicht, sondern „sieht“ ihn stattdessen an als anderer Typ unter Verwendung des unsicheren Pakets.
Das Binärpaket stellt auch die Funktionen „Read()“ und „Write()“ bereit, die diese ausführen Umbauten unter der Haube. Mit diesen Funktionen können Sie zwischen verschiedenen numerischen Typen und Byte-Arrays konvertieren.
<code class="go">var pi float64 buf := bytes.NewReader(b) err := binary.Read(buf, binary.LittleEndian, &pi) // or a := binary.LittleEndian.Uint64(b) a2 := math.Float64frombits(a)</code>
In diesem Beispiel enthält das Eingabe-Byte-Array den Wert von pi im Little-Endian-Format. Die Funktion Read() konvertiert das Byte-Array in einen float64-Wert, während Uint64() und Float64frombits() die Konvertierung manuell durchführen.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich numerische Typen in []Byte und zurück in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!