一,go的大端序和小端序
先看一个简单的例子,在计算机中是有大端序和小端序之分的,大端序就是大家正常的阅读习惯,比如 "今天你吃了吗",而小端序是计算机喜欢的阅读习惯比如刚才那句话,计算机用小端序就是 "吗了吃你天今"。
package main
import (
"encoding/binary"
"fmt"
)
//大端序和小端序
func main() {
u := uint32(0x01020304)
fmt.Println(u)
arr := make([]byte, 4)
// 大端序
binary.BigEndian.PutUint32(arr, u)
fmt.Printf("大端序排列:%v", arr)
// 小端序
binary.LittleEndian.PutUint32(arr, u)
fmt.Printf("小端序排列:%v", arr)
}
小端序的好处就是计算机处理的更快,当然坏处就是人看起来难受,所以计算机底层的核心逻辑以外,大部分还是选择了大端序,毕竟这样排bug更方便一些。
二,序列化与反序列化实现
package main
import (
"encoding/binary"
"fmt"
"go/types"
"unsafe"
)
type demoStruct struct {
Code