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>
この変換はメモリ値を操作するのではなく、メモリ値を「表示」します。
バイナリ パッケージには、これらを実行する 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 サイトの他の関連記事を参照してください。