全部。我遇到了一个看起来很奇怪的问题。(可能是我应该睡着了很久了,而我却忽略了一些明显的事情。)
[]byte由于进行了十六进制解码,我的长度为8。我需要产生一个uint64才能使用它。我尝试使用binary.Uvarint()fromencoding/binary来做,但是似乎只使用数组中的第一个字节。考虑以下示例。
package main
import (
"encoding/binary"
"fmt"
)
func main() {
array := []byte{0x00, 0x01, 0x08, 0x00, 0x08, 0x01, 0xab, 0x01}
num, _ := binary.Uvarint(array[0:8])
fmt.Printf("%v, %x\n", array, num)
}
运行该命令时,即使显示为numas 0,即使以十六进制显示也应为000108000801ab01。此外,如果从中捕获了第二个值binary.Uvarint(),则它是从缓冲区读取的字节数,据我所知,即使实际上是1,也应为8。
我是在解释这个错误吗?如果是这样,我应该改用什么?
呼唤远方
相关分类