我看到了一些与我遇到的完全相同的问题的答案:How to convert Byte array to int in GO programming language?我写了下面的函数来将字节数组转换为 intfunc convertByteToInt(in []byte) int32 { return (int32(in[0]) << 24 | int32(in[1]) << 16 | int32(in[2]) << 8 | int32(in[3]))}在此之前,我确保字节数组具有正确的(基数为 256)值。in[0] = 54(ASCII 为 6),in[1] = 54(ASCII 为 6),in[2] = 49(ASCII 为 1),in[3] = 49(ASCII 为 1)。所以我期待从字节数组中检索整数 6611 值,但我最终得到了 909521201。我无法理解在这样一个简单的转换中到底发生了什么。任何人都可以闪光吗?
3 回答
Helenr
TA贡献1780条经验 获得超4个赞
如果你需要的是转换一个简单的正int自带一个值[]byte,就像这个例子[]byte{'6', '6', '1', '1'}或[]byte{54, 54, 49, 49}(这是相同的),一个非常简单for的循环[]byte增加的int,会做的伎俩,就像这样:
var (
myInt, i int
myBytes = []byte{'6', '6', '1', '1'}
v byte
)
for ; i < len(myBytes); i++ {
v = myBytes[i] - '0'
myInt *= 10
myInt += int(v)
}
...就这样。
- 3 回答
- 0 关注
- 612 浏览
添加回答
举报
0/150
提交
取消