PutUnit32的官方文档如下,也就是说这个byte切片每个位置存放的数字都是不同的含义,如果将这个数组的每个位置进行输出是看不出什么结果的。
func (bigEndian) PutUint32(b []byte, v uint32) {
_ = b[3] // early bounds check to guarantee safety of writes below
b[0] = byte(v >> 24)
b[1] = byte(v >> 16)
b[2] = byte(v >> 8)
b[3] = byte(v)
}
测试代码:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
var buf [4]byte
pkglen := uint32(12312312)
binary.BigEndian.PutUint32(buf[0:4], pkglen)
for i := 0; i <= 3; i++ {
fmt.Printf("buf[%d]=%d\n", i,buf[i])
}
pkgLen := binary.BigEndian.Uint32(buf[0:4])
fmt.Println(pkgLen)
}
输出如下:
buf[0]=0
buf[1]=187
buf[2]=222
buf[3]=248
12312312