数值类型
byte alias for uint8
由于byte
是 的别名uint8
,因此您的问题“需要将 4 字节数组转换为 uint32”已得到解答:
如何在 Go 中将 [4]uint8 转换为 uint32?
包二进制
[Uvarints and] Varints 是一种使用一个或多个字节对整数进行编码的方法;绝对值较小的数字占用较少的字节数。有关规范,请参阅
http://code.google.com/apis/protocolbuffers/docs/encoding.html。
由于Uvarint
s 是整数表示和存储的一种特殊形式,因此您应该只对使用该ReadUvarint
函数写入的值使用该Uvarint
函数。
例如,
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
buf := make([]byte, 10)
x := uint64(0xFFFFFFFF)
fmt.Printf("%2d %2d %v\n", x, len(buf), buf)
n := binary.PutUvarint(buf, x)
buf = buf[:n]
fmt.Printf("%2d %2d %v\n", x, len(buf), buf)
y, err := binary.ReadUvarint(bytes.NewBuffer(buf))
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%2d %2d %v\n", y, len(buf), buf)
}
输出:
4294967295 10 [0 0 0 0 0 0 0 0 0 0]
4294967295 5 [255 255 255 255 15]
4294967295 5 [255 255 255 255 15]