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

Go で 16 進文字列を IEEE-754 浮動小数点値に変換するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-27 01:13:13
オリジナル
280 人が閲覧しました

How Can I Convert Hex Strings to IEEE-754 Floating-Point Values in Go?

IEEE-754 で 16 進数文字列を浮動小数点値に変換する

strconv.ParseFloat 関数を使用しているにもかかわらず、16 進数文字列を浮動小数点値に変換します課題を提起することができます。この記事では、strconv.ParseUint および安全でないパッケージを使用してこの変換を実現する別の方法について説明します。

ビット長の明確化

変換を続行する前に、次のことを確認することが重要です。入力 16 進文字列のビット長。質問で述べたように、提供された 16 進表現には 8 桁があり、float32 データ型の可能性を示しています。ただし、正確性を確保するには、質問者にこの点を明確にするのが最善です。

strconv.ParseUint の使用

16 進文字列からバイトを解析するには、strconv.ParseUint を使用します。雇用される。ただし、メモリ内で 8 バイトを占有する uint64 が返されるため、float32 の 4 バイト構造に一致するように uint32 に変換する必要があります。

s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
    panic(err)
}
n2 = uint32(n)
ログイン後にコピー

バイトを IEEE-754 Floating として解釈するポイント

これで、バイトは n2 にuint32 の場合、IEEE-754 浮動小数点数のバイトとして解釈する必要があります。 unsafe パッケージは、メモリ ポインターにアクセスして操作する方法を提供し、uint32 バイトから float32 を作成できるようにします。

f := *(*float32)(unsafe.Pointer(&n2))
ログイン後にコピー

math.Float32frombits を使用した代替方法

math パッケージには、この目的のために特別に設計された組み込み関数 math.Float32frombits が含まれています。これは、uint32 値を float32 に直接変換し、より単純なアプローチを提供します。

f := math.Float32frombits(n2)
ログイン後にコピー

出力

いずれかの方法を使用して、質問で提供されているサンプル 16 進数文字列を使用します。 float32 として解釈されると、-561.2863 に変換されます。このソリューションを Go Playground でテストすると、その機能をさらに実証できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート