ホームページ >バックエンド開発 >Golang >Go で 16 進数の文字列を IEEE-754 Float に変換するにはどうすればよいですか?

Go で 16 進数の文字列を IEEE-754 Float に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-24 14:58:11762ブラウズ

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

16 進数から IEEE-754 Float への変換

「0xC40C5253」のような 16 進数の文字列を IEEE-754 float 値に変換するには、標準の strconv. ParseFloat 関数だけでは十分ではありません。この記事では、この変換を実現するための代替方法を検討します。

まず、入力のビット長を決定します。この場合、16 進数が 8 桁なので、おそらく 32 ビット浮動小数点数です (ただし、ユーザーによる確認が推奨されます)。

strconv.ParseUint と安全でない変換の使用:

  • strconv.ParseUint() を使用して 16 進文字列を解析します。 32 ビット符号なし整数 (uint32)。
  • float32 のサイズと一致するように、uint64 の結果を uint32 に変換します。
  • unsafe パッケージを利用して、uint32 のバイトを uint32 のバイトとして解釈します。 float32.

コード:

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

math.Float32frombits を使用する代替:

math パッケージは以下を提供しますを直接変換する組み込み関数 Float32frombits() uint32 を float32 に変換します。

コード:

f := math.Float32frombits(n2)

使用法:

どちらの方法でも、アクセスできるようになりました。 f に格納される浮動小数点値。例:

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

以上がGo で 16 進数の文字列を IEEE-754 Float に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:結合と凝集次の記事:結合と凝集