ホームページ  >  記事  >  バックエンド開発  >  Go で数値型を []byte に変換して戻すにはどうすればよいですか?

Go で数値型を []byte に変換して戻すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 21:42:03419ブラウズ

How to Convert Numeric Types to []byte and Back in Go?

数値型を []byte に変換して戻す

Go では、次の Uint16() メソッドと Uint32() メソッドを使用して、符号なし整数をバイト配列に変換できます。 binary.BigEndian タイプと binary.LittleEndian タイプ。ただし、同等の Int16() メソッドや Float32() メソッドがないことにお気付きかもしれません。

エンディアンと数値型

エンディアンとは、特定のメモリにバイトが格納される順序を指します。数値型。 Go のバイナリ パッケージは、異なるエンディアン間の変換機能を提供します。

符号付き整数への変換

符号なし整数を符号付き整数に変換するには、単純な型変換を使用できます。符号なし 16 ビット整数 (uint16) と符号付き 16 ビット整数 (int16) のメモリ レイアウトは同じです。したがって、次の変換を実行できます。

<code class="go">a := binary.LittleEndian.Uint16(sampleA)
a2 := int16(a)</code>

この変換ではメモリ表現は変更されず、型のみが変更されます。

浮動小数点数への変換

変換符号なし整数から浮動小数点数への変換は少し複雑です。 Go の math パッケージは、math.Float32frombits() や math.Float64frombits() など、符号なし整数と浮動小数点の間で変換する関数を提供します。

<code class="go">a := binary.LittleEndian.Uint64(sampleA)
a2 := math.Float64frombits(a)</code>

この変換はメモリ値を操作するのではなく、メモリ値を「表示」します。

binary.Read() と binary.Write() の使用

バイナリ パッケージには、これらを実行する Read() 関数と Write() 関数も提供されています。内部での変換。これらの関数を使用すると、さまざまな数値型とバイト配列の間で変換できます。

<code class="go">var pi float64
buf := bytes.NewReader(b)
err := binary.Read(buf, binary.LittleEndian, &pi)

// or

a := binary.LittleEndian.Uint64(b)
a2 := math.Float64frombits(a)</code>

この例では、入力バイト配列にはリトル エンディアン形式の pi の値が含まれています。 Read() 関数はバイト配列を float64 値に変換しますが、Uint64() と Float64frombits() は手動で変換を実行します。

以上がGo で数値型を []byte に変換して戻すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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