1、编写一个简单函数检查处理器是 big-endian 还是 little-endian。
1.1、定义
little-endian 就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端;
big-endian 就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端;
网络字节序 TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
1.2、思路
由于联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little- endian还是Big-endian模式读写。
1 #include <stdio.h>
2
3 int main(void)
4 {
5 union MyUnion
6 {
7 unsigned int a;
8 unsigned char b;
9 };
10
11 union MyUnion test;
12 test.a = 1;
13 printf("%d\n", test.b);//1:little-endian 0:big-endian
14
15 return 0;
16 }
如上图,我的处理器是 little-endian。