大小端序的判断
采用大小端模式对数据进行存放的主要区别在于在存放的字节顺序
如果计算机中的低字节存的是数据的高字节的数据,则可判断是大端模式。
也就是:
大端方式将高位存放在低地址,小端方式将低位存放在低地址。
通过观察变量的内存值
#include <stdio.h>
int select(void)
{
int i = 0x12345678;
char *p = (char *)&i;
return (*p == 0x78);
}
int main(void)
{
if( select())
printf("小端序\n");
else
printf("大端绪\n");
return 0;
}
利用union判断大小端序
union里面的成员c和i都是从低地址开始对齐的。
cpu在对存储数据的的读取顺序是从低地址读到高地址的,所以先读char,
#include <stdio.h>
union node
{
int i;
char a;
};
int main(void)
{
union node one;
one.i = 1;
if(one.a == 1)
printf("小端序\n");
else
printf("大端序\n");
return 0;
}
**
通过强制类型转换实现大小端判断(和第一个相似)
**
#include <stdio.h>
int select(void)
{
int i = 1;
char *p = (char *)&i;
return (*p == 1);
}
int main(void)
{
if(select())
printf("小端序\n");
else
printf("大端序\n");
return 0;
}