基本概念:
大端字节序:高位存放在低地址,低位存放在高地址;
小端字节序:低位存放在低地址,高位存放在高地址;
大小端字节顺序它是CPU的属性,所以不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前的CPU是大端还是小端字节序,如果不同则移植需要转移字节序。
假设:
int num = 0x12345678
地址 大端 小端
0x1003高低址 78 12
0x1002 56 34
0x1001 34 56
0x1000低地址 12 78
编写程序验证方法:
#include <stdio.h> int main() { int num = 0x12345678; char *p = (char *)# if(*p == 0x78){ printf("little endian value = %#x\n", *p); }else if(*p == 0x12){ printf("big endian value = %#x\n", *p); } return 0; }
我在自己的ubuntu上面的编译运行程序的输出结果: