为了账号安全,请及时绑定邮箱和手机立即绑定

int16 到字节数组

int16 到字节数组

Go
ibeautiful 2021-06-08 13:04:06
我正在尝试将 int16 转换为字节数组,但似乎无法使其正常工作。这是我现在所拥有的:int16 i := 41a := []byte(string(i))//this line is wrong此外,如果有人想知道数组的长度需要为 2。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果您想获取 int16 的字节,请尝试以下操作:


var i int16 = 41

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

Go 试图让编写依赖于平台属性(例如字节顺序)的程序变得困难。因此,禁止导致此类依赖关系的类型双关(例如用 int16 覆盖字节数组)。


如果您真的想用脚射击自己,请尝试不安全的包裹。


查看完整回答
反对 回复 2021-06-21
?
慕容3067478

TA贡献1773条经验 获得超3个赞

虽然 FUZxxl 的答案有效,但您也可以使用 encoding/binary 包:


var i int16 = 41

b := make([]byte, 2)

binary.LittleEndian.PutUint16(b, uint16(i))

encoding/binary 包具有预构建的函数,用于为所有固定大小的整数编码小端和大端,以及一些易于使用的函数,如果您使用的是读取器和写入器而不是字节切片。例子:


var i int16 = 41

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


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信