Java

大小端

2020-08-19  本文已影响0人  杜攀

我还是弄不清,记不住到底哪个大,哪个小,所以我暂时先不管了

bool IsLittleEndian() {

    int a = 0x1234;

    char c = *(char *)&a;

    if(c == 0x34) {

        return true;

    }

    return false;

}

看着有点绕的代码,可以判断当前机器的大小端,但是用了bool关键词,所以要么自己定义好,或者是C的比较新的标准吧

以下内容来自网络问答

字节序由cpu架构决定的,x86 的是 little endian, PowerPC 是big endian。 所以跑在 x86 上的 linux/windows 都是小端,而跑在 PPC 上的linux则是大端。 (PS: 实际上 PowerPC 是即支持大端也支持小端,但是由于历史原因默认用大端)

目前Intel的80x86系列芯片是唯一还在坚持使用小端的芯片(windows系统就是基于该架构),ARM芯片默认采用小端,但可以切换为大端。另外,对于大小端的处理也和编译器的实现有关,在C语言中,默认是小端(但在一些对于单片机的实现中却是基于大端,比如Keil 51C),Java是平台无关的,默认是大端。在网络上传输数据普遍采用的都是大端模式。

上一篇下一篇

猜你喜欢

热点阅读