判断大小端--C语言版
【摘要】 首先,什么是大小端存储方式?大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。方法一:使用强制类型转换int is_byteorder(int* p){ return *(char*)p;//强制类型转换,将精度跳得更高一点}int main(){ int...
首先,什么是大小端存储方式?
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。
方法一:使用强制类型转换
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
欢迎点赞收藏关注,感谢大家的支持!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)