繁体   English   中英

int16到字节数组

[英]int16 to byte array

我正在尝试将int16转换为字节数组,但我似乎无法让它工作。
这就是我现在所拥有的:

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

此外,如果有人想知道数组需要长度为2。

虽然FUZxxl的答案有效,但您也可以使用编码/二进制包:

var i int16 = 41
b := make([]byte, 2)
binary.LittleEndian.PutUint16(b, uint16(i))

编码/二进制包具有预编译函数,用于为所有固定大小的整数编码小端和大端,以及一些易于使用的函数,如果您使用读者和写入器而不是字节片。 例:

var i int16 = 41
err := binary.Write(w, binary.LittleEndian, i)

如果你想获得int16的字节,试试这样的事情:

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

Go尝试使编写依赖于平台属性的程序(如字节顺序)变得困难。 因此,禁止导致这种依赖性的类型惩罚(例如用int16覆盖字节数组)。

如果你真的想用脚射击自己,试试包不安全

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM