大小端
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是平台无关的,默认是大端。在网络上传输数据普遍采用的都是大端模式。