我正在尝试将以下值020000
的 byte slice 解析为基数为16的数字,但尚未使它工作。我究竟做错了什么?
package main
import (
"fmt"
"strconv"
)
func main() {
input := []byte{0, 2, 0, 0, 0, 0}
expectation := 131072
actual := headerVersion(input)
if actual != expectation {
panic(fmt.Sprintf("Expected %v but got %v.", expectation, actual))
}
}
func headerVersion(input []byte) int {
output, _ := strconv.ParseUint(string(input), 16, 64)
return int(output)
}
https://play.golang.org/p/eM5RQAJdoL
最佳答案
您有一个原始 byte slice ,它是组成所需数字的字节,但是您将其解析为好像是组成所需数字的字节字符串表示形式的字节。与其尝试解析为字符串,不如解析为字符串-字节。您可以使用 binary
package完成此操作,根据其文档:
正是您想要的。如何使用它取决于数据的字节顺序和编码,但是文档应使您朝正确的方向前进。
关于string - 尝试将 byte slice 解析为Golang中的基数16,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47016103/