大小端存储问题(字节序问题):
CPU的不同,对多字节数据存储的方式也不同。
1. Little-endian:将低序字节存储在起始地址(低位编址)
2. Big-endian:将高序字节存储在起始地址(高位编址)
小端存储:地址低位存储数据低位,地址高位存储数据高位
大端存储:地址低位存储数据高位,地址高位存储数据低位
如图:
可以通过一个程序判断CPU的大小端存储:
#include <stdio.h>
int main(){
//通过指针判断大小端
int a = 0x12345678;
char *p = (char *)&a;
if(0x78 == *p){
printf("小端\n");
}else if(0x12 == *p){
printf("大端\n");
}
return 0;
}