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

使用GO语言将ASCII数字字符的字节数组转换为int

使用GO语言将ASCII数字字符的字节数组转换为int

Go
慕神8447489 2021-09-09 15:20:02
我看到了一些与我遇到的完全相同的问题的答案: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)

}

...就这样。



查看完整回答
反对 回复 2021-09-09
  • 3 回答
  • 0 关注
  • 612 浏览
慕课专栏
更多

添加回答

举报

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