將十六進位字串轉換為IEEE-754 浮點值
將十六進位字串轉換為浮點值可能具有挑戰性,尤其是使用標準庫單獨發揮作用。本文提供了一個基於 IEEE-754 轉換標準的解決方案。
首先,確定輸入的位元長度至關重要。在這種情況下,由於十六進位字串有四個位元組長,因此它很可能表示一個 float32 數字。
首先,我們解析位元組使用strconv.ParseUint() 函數將十六進位表示形式轉換為無符號32 位元整數(uint32)。此函數傳回uint64,因此我們需要將其轉換為uint32 以符合float32 的大小:
s := "C40C5253" n, err := strconv.ParseUint(s, 16, 32) if err != nil { panic(err) } n2 := uint32(n)
雖然我們有十六進位字串中的字節,但它們仍然被解釋為整數。為了將它們正確解釋為IEEE-754 浮點數,我們使用unsafe 套件建立一個指向uint32 變數的指針,並將其作為float32 取消引用:
f := *(*float32)(unsafe.Pointer(&n2))
fmt.Println(f)
-561.2863
f := math.Float32frombits(n)
以上是如何在 Go 中將十六進位字串轉換為 IEEE-754 單精確度浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!