Heim >Backend-Entwicklung >Golang >Wie konvertiert man in Go hexadezimale Zeichenfolgen in IEEE-754-Floats?

Wie konvertiert man in Go hexadezimale Zeichenfolgen in IEEE-754-Floats?

DDD
DDDOriginal
2024-11-24 14:58:11776Durchsuche

How to Convert Hexadecimal Strings to IEEE-754 Floats in Go?

Hexadezimal in IEEE-754-Float umwandeln

Um hexadezimale Zeichenfolgen wie „0xC40C5253“ in IEEE-754-Float-Werte zu konvertieren, ist der Standard strconv. Die ParseFloat-Funktion ist nicht ausreichend. In diesem Artikel werden alternative Methoden zum Erreichen dieser Konvertierung untersucht.

Bestimmen Sie zunächst die Bitlänge der Eingabe. In diesem Fall handelt es sich bei 8 Hexadezimalstellen wahrscheinlich um einen 32-Bit-Float (obwohl eine Bestätigung durch den Benutzer empfohlen wird).

Verwendung von strconv.ParseUint und unsicherer Konvertierung:

  • Verwenden Sie strconv.ParseUint(), um die Hex-Zeichenfolge als 32-Bit-Zeichenfolge ohne Vorzeichen zu analysieren Ganzzahl (uint32).
  • Konvertieren Sie das uint64-Ergebnis in uint32, um es an die Größe von float32 anzupassen.
  • Verwenden Sie das unsichere Paket, um die Bytes von uint32 als Bytes von a zu interpretieren float32.

Code:

s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
    panic(err)
}
n2 := uint32(n)
f := *(*float32)(unsafe.Pointer(&n2))

Alternative zur Verwendung von math.Float32frombits:

Das Mathematikpaket bietet eine integrierte Funktion Float32frombits(), die einen uint32 direkt in einen konvertiert float32.

Code:

f := math.Float32frombits(n2)

Verwendung:

Mit beiden Methoden können Sie jetzt auf den Float-Wert zugreifen gespeichert in f. Zum Beispiel:

fmt.Println(f) // Output: -561.2863

Das obige ist der detaillierte Inhalt vonWie konvertiert man in Go hexadezimale Zeichenfolgen in IEEE-754-Floats?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Kopplung und KohäsionNächster Artikel:Kopplung und Kohäsion