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

我看到了一些与我遇到的完全相同的问题的答案:How to convert Byte array to int in GO programming language?


我写了下面的函数来将字节数组转换为 int


func 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。我无法理解在这样一个简单的转换中到底发生了什么。任何人都可以闪光吗?


慕神8447489
浏览 613回答 3
3回答

Helenr

如果你需要的是转换一个简单的正int自带一个值[]byte,就像这个例子[]byte{'6', '6', '1', '1'}或[]byte{54, 54, 49, 49}(这是相同的),一个非常简单for的循环[]byte增加的int,会做的伎俩,就像这样:var (&nbsp; &nbsp; myInt, i int&nbsp; &nbsp; myBytes = []byte{'6', '6', '1', '1'}&nbsp; &nbsp; v byte)for ; i < len(myBytes); i++ {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v = myBytes[i] - '0'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myInt *= 10&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myInt += int(v)}...就这样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go