该代码实现了一个判断系统是否为小端序(little-endian)的Go函数。通过创建一个int16变量(值为1),检查其内存首字节是否为0:若为0则为大端序,否则为小端序。函数利用unsafe.Pointer直接访问内存,通过比较NativeEndian与binary.LittleEndian返回布尔值。该方案是检测系统字节序的经典方法,适用于需要处理二进制数据的场景。
package utils
import (
"encoding/binary"
"unsafe"
)
// NativelyLittle 返回当前系统的字节序是否为 little-endian
func NativelyLittle() bool {
var NativeEndian binary.ByteOrder
// 通过检查 int16 的内存布局来确定系统字节序
var one int16 = 1
b := (*byte)(unsafe.Pointer(&one))
if *b == 0 {
NativeEndian = binary.BigEndian
} else {
NativeEndian = binary.LittleEndian
}
return NativeEndian == binary.LittleEndian
}