大小端字节序存储:
大端字节数存储:低存高,高存低 是大端
小端字节数存储:高存高,低存低 是小端
在以下代码中:
#include<stdio.h>
int main()
{
int a = 10;
return 0;
}
在vs中对其进行调试观察内存:
可以看到在内存中,&a在保存a的地址0x010FF978处,保存的内容为0a 00 00 00
a = 10在内存中的二进制表示为:00000000 00000000 00000000 00001010
用16进制表示为:00 00 00 0a
但是观察到实际上存储的为:0a 00 00 00
这就说明了vs2019采用的是小端存储
通过下面这幅图可以更好的理解大小端存储:
那出一个问题:
如何用代码实现判断是大端存储还是小端存储:
#include<stdio.h>
int Da_Xiao(int a)
{
char* p = (char*)&a;
return *p;
}
int main()
{
int a = 1;
int ret = Da_Xiao(a);
if (ret)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}