基本概念:
大端字节序:高位存放在低地址,低位存放在高地址;
小端字节序:低位存放在低地址,高位存放在高地址;
大小端字节顺序它是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上面的编译运行程序的输出结果: