全部的我遇到了一个似乎很奇怪的问题.(可能是我该睡觉的时候已经过go 很久了,我忽略了一些显而易见的事情.)
我有一个长度为8的[]byte
,这是一些祸不单行解码的结果.我需要生产一台uint64
才能使用它.我try 过使用binary.Uvarint()
,从encoding/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)
}
100
运行时,它会将num
显示为0
,即使十六进制的值应该是000108000801ab01
.此外,如果从binary.Uvarint()
中捕捉到第二个值,则是从缓冲区读取的字节数,据我所知,应该是8,即使它实际上是1.
我是不是理解错了?如果是这样的话,我应该用什么来代替呢?
谢谢你们所有人.:)