全部。我遇到了一个似乎很奇怪的问题。(可能是我应该睡着的时间已经过去了,我忽略了一些明显的东西。)
由于一些十六进制解码,我有一个[]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)
}
当它运行时,它显示num
为0
,即使在十六进制中,它应该是000108000801ab01
。此外,如果从 中捕获第二个值binary.Uvarint()
,则它是从缓冲区读取的字节数,据我所知,它应该是 8,即使它实际上是 1。
我解释错了吗?如果是这样,我应该改用什么?
谢谢大家。:)