Wie konvertiere ich numerische Typen in []Byte und zurück in Go?

Mary-Kate Olsen
Freigeben: 2024-10-30 21:42:03
Original
418 Leute haben es durchsucht

How to Convert Numeric Types to []byte and Back in Go?

Konvertieren numerischer Typen in []Byte und zurück

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 und numerische Typen

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.

Konvertieren in vorzeichenbehaftete Ganzzahlen

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>
Nach dem Login kopieren

Diese Konvertierung ändert nicht die Speicherdarstellung, sondern nur den Typ.

Konvertierung in Gleitkommazahlen

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>
Nach dem Login kopieren

Diese Konvertierung manipuliert den Speicherwert nicht, sondern „sieht“ ihn stattdessen an als anderer Typ unter Verwendung des unsicheren Pakets.

Verwendung von „binary.Read()“ und „binary.Write()“

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!