大小端介绍
- 大端存储
将一个数据的低字节序的内容存储到高地址处,高字节序的内容存储到低地址处。
2.小端存储
将一个数据的低字节序内容存储到低地址处,将高字节序的内容存储到高地址处。
检测方法
算法一:
取出一个整型数的地址,并拿出第一个字节判断是高字节序还是低字节序
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int check_sys()
{
int a = 1;
char *p = (char *)&a; //取地址并取出第一个字节进行
return *p; //返回第一个字节,是1为小端存储,是0为大端存储
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
printf("小端存储\n");
}
else if (ret == 0)
{
printf("大端存储\n");
}
return 0;
}
算法二:
利用共用体成员共用一块空间,取出第一个字节的地址,进行判断
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int check_sys()
{
union Un
{
char c;
int i;
}u;
u.i = 1; //整型和字符型共用同一块空间,取出第一个字节的地址
return u.c;
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
printf("小端存储\n");
}
else if (ret == 0)
{
printf("大端存储\n");
}
return 0;
}
运行结果:
注:以上结果在win 10 vs2013 环境下测试