Go语言中没有直接的大小端检测库,因此我写了个小程序用来检测机器的大小端。

检测的核心方法其实就是C语言里的检测方法,通过测试一个特定的int类型变量的头部字节,来确定机器的大小端。

核心代码:

const INT_SIZE int = int(unsafe.Sizeof(0))

//true = big endian, false = little endian
func getEndian() (ret bool) {
    var i int = 0x1
    bs := (*[INT_SIZE]byte)(unsafe.Pointer(&i))
    if bs[0] == 0 {
        return true
    } else {
        return false
    }
}

我写的检测代码的地址:

https://github.com/virtao/GoEndian

通过以下命令安装到gopath里:

go get github.com/virtao/GoEndian

库的使用方法在项目主页中有描述。