嘗試使用strconv.ParseFloat 將十六進位字串(例如「0xC40C5253」)轉換為浮點值時被證明不成功,請使用替代方法方法需要是
一種方法涉及利用strconv.ParseUint() 函數將十六進位表示形式的位元組解析為無符號 32 位元整數 (uint32)。這是必要的,因為 float32 通常用於表示 4 位元組長度的 float 值,需要位元組被解釋為這樣。
使用 unsafe 套件,可以透過建立將位元組重新解釋為 float32 值指向 uint32 變數的指標並將其指派給 float32 變數。
JimB 建議的另一種方法是使用 math 套件的內建方法函數,math.Float32frombits()。此函數直接將無符號 32 位元整數轉換為 float32 值,從而消除了不安全指標運算的需要。
以下是示範過程的更新程式碼片段:
package main import ( "fmt" "strconv" "unsafe" ) func main() { s := "C40C5253" n, err := strconv.ParseUint(s, 16, 32) if err != nil { panic(err) } n2 := uint32(n) funsafe := *(*float32)(unsafe.Pointer(&n2)) fmt.Println(funsafe) fmath := math.Float32frombits(n2) fmt.Println(fmath) }
以上是Go中如何有效率地將十六進位字串轉換為Float32值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!