- 1、大端模式(Big endian):将高序字节存储在起始地址(按照从低地址到高地址的顺序存放数据的高位字节到低位字节)
- 2、小端模式(Little endian):将低序字节存储在起始地址(按照从低地址到高地址的顺序存放据的低位字节到高位字节)
一般来说网络传输的字节序,可能是大端序或者小端序,取决于软件开始时通讯双方的协议规定。TCP/IP协议RFC1700规定使用“大端”字节序为网络字节序,开发的时候需要遵守这一规则。默认golang是使用大端序。
import (
"encoding/binary"
"fmt"
)
func BigEndian() { // 大端序
// 二进制形式:0000 0000 0000 0000 0001 0002 0003 0004
var testInt int32 = 0x01020304 // 十六进制表示
fmt.Printf("%d use big endian: \n", testInt)
var testBytes []byte = make([]byte, 4)
binary.BigEndian.PutUint32(testBytes, uint32(testInt)) //大端序模式
fmt.Println("int32 to bytes:", testBytes)
convInt := binary.BigEndian.Uint32(testBytes) //大端序模式的字节转为int32
fmt.Printf("bytes to int32: %d\n\n", convInt)
}
func LittleEndian() { // 小端序
//二进制形式: 0000 0000 0000 0000 0001 0002 0003 0004
var testInt int32 = 0x01020