大小端问题
来源:互联网 发布:淘宝网婴儿衣服 编辑:程序博客网 时间:2024/06/16 09:50
为什么要判断大小端:
因为在计算机中,我们是以字节为单位的,每个地址单元对应着一个字节,一个字节8bit。在编程语言中,除了1字节的char还有几个字节的int, short等数据类型,既然不止一个字节,那么就存在如何将多个字节排序的问题,由此就导致了大小端模式。
大小端区别:
大端字节是指在一个整数的高位字节(23-31 bit)存储在内存的低地址处,低位字节(0-7 bit)存在内存的高地址处。小端则正好相反。
例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。
如何用程序判断主机是大端还是小端:
//结合以上给出的例子//联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性可以轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写:void byteorder(){ union { short value; char union_bytes[sizeof(short)]; }test; test.value = 0x0102; if ((test.union_bytes[0] == 1) &&(test.union_bytes[1] == 2)) printf("bigedition\n"); else if ((test.union_bytes[0] == 2) &&(test.union_bytes[1] == 1)) printf("smalledition"); else printf("unknown");}
0 0
- 存储大小端问题
- 大小端存储问题
- 大小端问题
- cpu大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端存储问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端判断问题
- 存储大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 小记:大小端问题!
- vistual studio 2012 在本地安装 msdn2013
- Apple Watch开发(二)--Xcode创建项目及其结构
- uva 512
- Hive启动报错解决方法
- 堆和栈的区别(转过无数次的文章)
- 大小端问题
- 远程桌面使用分三步:
- lua里面访问表中的所有元素
- 【博弈论】阶梯博弈
- 织梦(dedecms)系统常用全局变量调用标签及路径
- 关于opencv的配置
- 每日一贴-环境搭建
- shell 笔记 VIM使用
- NSDate 的一些操作(比较、创建、在现有date加减一定时间等)