16 進数文字列を IEEE-754 Float 値に変換する
16 進数文字列を浮動小数点値に変換することは、特に標準ライブラリを使用する場合、困難な場合があります。単独で機能します。この記事では、IEEE-754 変換規格に基づいたソリューションを提供します。
まず、入力のビット長を決定することが重要です。この場合、16 進文字列の長さは 4 バイトであるため、float32 数値を表している可能性があります。
まず、バイトを解析します。を使用して、16 進数表現を符号なし 32 ビット整数 (uint32) に変換します。 strconv.ParseUint() 関数。この関数は uint64 を返すため、float32 のサイズに一致するように uint32 に変換する必要があります。
s := "C40C5253" n, err := strconv.ParseUint(s, 16, 32) if err != nil { panic(err) } n2 := uint32(n)
16 進文字列からバイトを取得しても、それらは依然として整数として解釈されます。これらを IEEE-754 float として正しく解釈するには、unsafe パッケージを使用して uint32 変数へのポインターを作成し、それを float32 として逆参照します。
f := *(*float32)(unsafe.Pointer(&n2))
最後に、結果の float32 を出力できます。 value:
fmt.Println(f)
出力例:
-561.2863
math パッケージは math.Float32frombits() 関数を提供します。 uint32 から float32 への変換を直接実行します:
f := math.Float32frombits(n)
以上がGo で 16 進文字列を IEEE-754 単精度浮動小数点数に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。