16

int16 をバイト配列に変換しようとしていますが、うまく動作しないようです。
これが私が今持っているものです:

int16 i := 41
a := []byte(string(i))//this line is wrong

また、配列の長さを 2 にする必要があるかどうか疑問に思っている人もいます。

4

2 に答える 2

22

int16 のバイトを取得したい場合は、次のようにしてみてください。

var i int16 = 41
var h, l uint8 = uint8(i>>8), uint8(i&0xff)

Go は、バイト オーダーなどのプラットフォームの属性に依存するプログラムを作成しにくくしようとします。したがって、そのような依存関係につながる型パニング (バイト配列を int16 でオーバーレイするなど) は禁止されています。

本当に自分の足を撃ちたい場合は、パッケージunsafeを試してください。

于 2013-06-23T11:16:56.447 に答える