判断机器大小端的方法总结
来源:互联网 发布:金数据和麦克 编辑:程序博客网 时间:2024/05/02 04:49
typedef unsigned char BOOL;
#define BOOL_TRUE 1
#define BOOL_FALSE 0
判断机器大小端面,小端返回BOOL_TRUE,大端返回BOOL_FALSE;
首先,先说明下大小端的定义:
小端:内存的低地址存储的是数据的低位,高地址存储的是数据的高位。
大端:内存的高地址存储的是数据的
例:大小端对一个int类型数据的存储,以0x12345678为例
1.利用联合体特性判断(联合体union的存放顺序是所有成员都从低地址开始存放)
BOOL IsLittleEndian(){ENDIAN_U stEndian;stEndian.sShort = 0x0001;if(stEndian.cChar == 0x01){return BOOL_TRUE;}return BOOL_FALSE;}
2.利用指针判断
BOOL IsLittleEndian(){short sShort = 0x1234;char *pcChar = (char *)&sShort;if(*pcChar == 0x34){return BOOL_TRUE;}return BOOL_FALSE;}
3.利用系统函数htons()判断
BOOL IsLittleEndian(){if(0x01 != htons(0x01)){return BOOL_TRUE;}return BOOL_FALSE;}
常见的情况为以上三种,个人感觉还可以有一种
4.利用位域判断
<pre name="code" class="cpp">typedef struct Endian_Bit_tag{char sReserve:4;char sReserve2:4;}ENDIAN_BIT_S;BOOL IsLittleEndian_Bit(){ENDIAN_BIT_S stEndian;*(char *)(&stEndian) = 0x01;if(stEndian.sReserve== 0x1){return BOOL_TRUE;}return BOOL_FALSE;}
以此题为例:当机器为小端时,stEndian.sUseful的值是0x01,当机器为大端时,stEndian.sUseful的值是0x00
0 0
- 判断机器大小端的方法总结
- 判断机器的大小端
- 判断机器的大小端
- 判断机器大小端的两种实现方法
- 机器大小端判断
- 判断机器大小端
- 判断机器的大小端模式
- 判断机器的大小端 && 和位数
- 判断机器的大小端问题
- 【C语言】判断机器的大小端
- C语言判断机器CPU大小端模式的两种方法
- 判断机器大小端问题
- 判断机器大小端模式
- 测试机器大小端的方法
- 测试机器大小端存储的方法
- 如何判断机器的大小端的问题
- 大小端机器的判断-引发的思考
- 大小端机器的判断-引发的思考
- mac shell脚本自动安装指定apk到安装android手机
- Android第十九天 ActionBar
- Android总结篇系列:Android广播机制
- linux 配置程序自启动的地方
- 解决failed to find Build Tools revision xxx问题
- 判断机器大小端的方法总结
- 代码人生--前传(一):一台电脑和两个孩子的故事
- memcached全面剖析--2.理解memcached的内存存储
- Windows下使用GNUstep编写Object-C程序
- V_OP 后台作业job
- POJ 1050
- 微易企业号和企业号有什么区别 ?
- 直到刚才,我才想明白大家对 PHP 的用法是如此迥异
- stretching image-based content