判断在存储数据使用的大小端
来源:互联网 发布:程序员打太极 编辑:程序博客网 时间:2024/05/22 16:46
众所周知,对于数据超过一个字节的数据,在计算机中的存储需要跨越字节。某些机器选择在存储器中按照从最低为有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高为有效字节到到最低为有效字节的顺序存储,前一种存储方式被称为小端存储,后一种方式被称为大端存储。判断机器是大端存储还是小端存储,他的实现代码非常简单,下面,我将介绍三种方式,从而让大家判断:第一种:不分装函数,直接在main函数内进行定义
#include<stdio.h>int main(){ int i = 1; if (*(char *)&i == 1) //对i进行强制类型转换,char型的数据解引用只能访问一个字节 //8位二进制存储 //00 00 00 01 { printf("小端\n"); } else { printf("大端\n"); } system("pause"); return 0;}
第二种方法:在main外封装一个函数
#include<stdio.h>int check_sys(){ int i = 1; int ret; if (*(char *)&i == 1) { ret = 1;//小端存储 } else { ret = 0;//大端存储 } }int main(){ int tmp = check_sys(); if (tmp == 1) { printf("小端\n"); } else { printf("大端\n"); } system("pause"); return 0;}
在此部分,可直接将封装函数中的if else省略,直接让其返回return *(char *)&i;
即可,这样更大程度的提高了程序的运行速率,节省了时间。
第三种方法:利用联合,判断数据的存储方式。
联合的基本概念:联合的所有成员在内存块中占相同的位置,对其的类型,与结构体类似,可以参考前面所说的结构体。
在一个成员长度不同的联合里,分配给联合的内存数量取决于它的最大成员的大小
int check_sys(){ union UN { int i;//可访问四个字节 char c;//仅可以访问一个字节 }u; u.i = 1; return u.c;}int main(){ int ret = check_sys(); if (ret==1) { printf("小端\n"); } else { printf("大端\n"); } system("pause"); return 0;}
每台机器各有不同,可以通过此种方式,从而确定自己所使用机器在存储数据时的不同。
希望这些可以帮助到大家,在今后的学习中一起进步。
具体如图所示:
学习的路上,永不停歇!!!
阅读全文
0 0
- 判断在存储数据使用的大小端
- 数据存储大小端判断
- 数据存储的大小端
- 大小端存储判断
- 【C语言】大小端存储的判断
- 数据存储大小端
- 判断CPU大小端存储
- 数据存储的大小端问题
- 存储数据的大小端模式
- 判断CPU存储字节大小端的两个程序
- 系统的存储模式大小端理解与判断
- 【腾讯面试题】判断机器的大小端存储方式。
- 数据存储大小端模式
- C语言判断大小端存储
- 机组判断存储方式大小端
- 大小端的判断
- 本地机器大小端判断(本机数据存储形式)
- 关于数据存储大小端模式的C语言题目
- 【步兵 经验篇】游戏常用的三个处理
- 图结构绘板-教程
- Linux 用户配置文件
- 为什么打印String对象,不是地址值?
- JAVA面向对象
- 判断在存储数据使用的大小端
- 后台线程
- Android活动
- 常用的一些DOS命令
- VS2013+Ceres编译教程 Win7系统
- 数据库四种隔离级别
- tomcat 虚拟目录自定义404页面
- 国外Appleid共享
- poj 2758 后缀数组