Hex-Strings in IEEE-754-Float-Werte konvertieren
Das Konvertieren von Hex-Strings in Gleitkommawerte kann eine Herausforderung sein, insbesondere bei Verwendung der Standardbibliothek funktioniert alleine. Dieser Artikel bietet eine Lösung basierend auf dem Konvertierungsstandard IEEE-754.
Zunächst ist es wichtig, die Bitlänge der Eingabe zu bestimmen. Da die Hex-Zeichenfolge in diesem Fall vier Bytes lang ist, stellt sie wahrscheinlich eine Float32-Zahl dar.
Zuerst analysieren wir die Bytes von der Hex-Darstellung in eine vorzeichenlose 32-Bit-Ganzzahl (uint32) mithilfe der Funktion strconv.ParseUint(). Diese Funktion gibt ein uint64 zurück, daher müssen wir es in uint32 konvertieren, um der Größe von float32 zu entsprechen:
s := "C40C5253" n, err := strconv.ParseUint(s, 16, 32) if err != nil { panic(err) } n2 := uint32(n)
Wir haben zwar die Bytes aus der Hex-Zeichenfolge, sie werden jedoch immer noch als Ganzzahl interpretiert. Um sie korrekt als IEEE-754-Float zu interpretieren, verwenden wir das unsichere Paket, um einen Zeiger auf die uint32-Variable zu erstellen und sie als float32 zu dereferenzieren:
f := *(*float32)(unsafe.Pointer(&n2))
Schließlich können wir den resultierenden float32-Wert ausdrucken:
fmt.Println(f)
Beispiel Ausgabe:
-561.2863
Das Mathematikpaket stellt die Funktion math.Float32frombits() bereit, die die Konvertierung direkt von einem uint32 in einen float32 durchführt:
f := math.Float32frombits(n)
Das obige ist der detaillierte Inhalt vonWie konvertiere ich in Go eine Hex-Zeichenfolge in eine IEEE-754-Gleitkommazahl mit einfacher Genauigkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!