字节序被分为两类:
1. Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
2.Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
我们可以利用这2个代码来判断我们的机器是哪一种存储方式(第一个更简洁,第二个则更容易理解里面发生了什么):
#include <stdio.h>
int Check_sys()
{
int i = 1;
return (*(char*)&i);
}
int main()
{
int ret = Check_sys();
if(ret)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
char* p = NULL;
i = 0x11223344;
p = (char*) & i;
if (*p == 0x11)
{
printf("该机器是大端字节序\n");
}
else if (*p == 0x44)
{
printf("该机器是小端字节序\n");
}
else
{
printf("代码有误,请修改代码再进行判断\n");
}
return 0;
}