C语言判断大小端的两种方法
作者:fiance111
大小端的问题在很多面试笔试中都会遇到,本文主要介绍了C语言判断大小端的两种方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
首先,什么是大小端存储方式?
- 大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
- 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
方法一:使用强制类型转换
int is_byteorder(int* p)
{
return *(char*)p;//强制类型转换,将精度跳得更高一点
}
int main()
{
int n = 1;
int ret = is_byteorder(&n);
if (ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
方法二:利用联合体数据存储的特点
联合体里面的数据会共用同一块内存,改变其中一个数据的值,其他数据的值可能也会随之变化
int is_byteorder(int* p)
{
union un { //定义一个联合体类型
int i;
char c;
}u;
u.i = 1;//修改i的值,c的值也会随之发生变化
return u.c;
}
int main()
{
int n = 2;
int ret = is_byteorder(&n);
if (ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
如果将 i 改为1,如果是小端存储,就会将01存储到 c 中,就会返回1
到此这篇关于C语言判断大小端的两种方法的文章就介绍到这了,更多相关C语言判断大小端内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
