第一种方法:利用共用体测试设备大小端
首先了解共用体,共用体又称联合体,内部成员共用同一块空间,以最大成员来开辟空间,例如:
union inf{
char a;
int b;
};//4字节
然后设备大小端是什么意思呢?
不同平台或设备进行网路数据传输的时候可能会遇到数据存储顺序不同,实际生活中,右边数据为低位,左边为高位,存储中,地址顺序低到高
小端存储:低位地址存储低位数据
大端存储:低位地址存储高位数据
标准解释:
大端字节序存储:把一个数据的高位字节序的内容存放在低地址处,把低位字节序的内容放在高位地址处,就是大端字节序存储;
小端字节序存储:把一个数据的高位字节序的内容存放在高地址处,把低位字节序的内容放在低地址处,就是小端字节序存储;
有了这些知识我们就可以利用共用体测试设备大小端了,具体怎么做呢,如下所示:
#include <stdio.h>
int main()
{
union info{
char c;
int a;
}n;
n.a = 97;
if(n.c == 'a')//如果相等,则是低位地址存低位数据,可判断为小端
{
printf("设备是小端\n");
}
else//如果不相等,则是低位地址存高位数据,则可判断为大端
{
printf("设备是大端\n");
}
return 0;
}
第二种方法:利用强制类型转换测试设备大小端
#include <stdio.h>
int check_sys(void)
{
int a = 1;
if(*(char*)&a == 1)//指针类型不同决定了它的访问权限,char*类型的指针,
//解地址只能访问地址后一个字节单位的空间
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int ret = check_sys();//调用定义的判断大小段的函数
if(ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
2005

被折叠的 条评论
为什么被折叠?



