【技巧】用union验证机器为大端还是小端
来源:互联网 发布:淘宝客服新手培训 编辑:程序博客网 时间:2024/05/02 22:10
union U{ short a; char c;};U u;
在C Programming Language 一书中对于联合体是这么描述的:
1)联合体是一个结构;
2)它的所有成员相对于基地址的偏移量都为0;
3)此结构空间要大到足够容纳最"宽"的成员;
4)其对齐方式要适合其中所有的成员;
所以一个联合体在内存中的存储形式如下图:
从图中,很容易看出变量a、c、u的地址都是0x20000000
u.a=0x1234;小端模式(数据的高字节保存在内存的高地址中)下,存储情况如下:
大端模式下(数据的高字节保存在内存的低地址中),存储情况如下:
所以,只要我们取出变量c的值,进行比对;若其值为34h,则机器为小端模式,若其值为12h,则机器为大端模式。
实现代码如下:
#include <stdio.h>union U{ int a; char c;}u;int main(){ u.a=0x1234; if(0x34 == u.c) { printf("The machine is little-end.\n"); } else if(0x12 == u.c) { printf("The machine is big-end.\n"); } return 0;}
0 0
- 【技巧】用union验证机器为大端还是小端
- 怎样判断机器为大端还是小端
- 小端法与大端法及验证机器小端还是大端的验证程序
- 利用union类型测试机器是大端还是小端(Big_endian or Little_endian)
- 判断机器是大端还是小端
- 联合体判断机器为大端字节序还是小端字节序
- 大端还是小端
- 如何判断机器是大端还是小端
- 题目:如何判断一个机器是大端还是小端
- 如何判别机器是大端还是小端
- 你的机器是大端还是小端?
- C实现当前机器模式是大端还是小端
- 判断一个机器是大端存储还是小端存储
- 用联合体判断机器是大端字节序还是小端字节序
- 测试机器是否为 大端or小端
- CPU大端还是小端
- 判断大端还是小端
- c语言 union与大端小端
- 发现不一样3.类和结构体
- 获取activity的几种写法
- jQuery源码分析-03构造jQuery对象-源码结构和核心函数
- 变量的初始化、寿命
- 获取Magento域名及图片,JS路径方法 magento
- 【技巧】用union验证机器为大端还是小端
- 经典Sql面试题收集!!
- jquery:只能让输入的内容是1-9、a-f。否则就变为0
- cocos2dx 3.2下利用裁剪节点实现跑马灯滚动效果
- hdu 3255 Farming(扫描线)
- 发现不一样4.数组和字典
- strcpy与strncpy工作方式及其区别
- 导出 WINDOWS\assembly中DLL文件 (转)
- jQuery源码分析-03构造jQuery对象-工具函数