版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、字节序(大小端)详解从高低地址和高低位开始理解(转)一、字节序定义字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下:a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。b) Big-Endian就是
2、高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。c)网络字节序:4个字节的32bit值以下面的次序传输:首先是07bit,其次815bit,然后1623bit,最后是2431bito这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。比如,以太网头部中2字节的“以太网帧类型”,表示后面数据的类型。对于ARP请求或应答的以太网帧类型来说,在网络传输时,发送的顺序是0x08,0x06。在内存中的映象如下图所示:栈底(高地址)0x06-低位0x08-高位栈顶(低地址)该字段的值为0x0806。按照大端方式存放在内存中。
3、二、高/低地址与高低字节首先我们要知道我们C程序映像中内存的空间布局情况:在C专家编程中或者Unix环境高级编程中有关于内存空间布局情况的说明,大致如下图:最高内存地址0xffffffff|栈底.栈.栈顶|/NULL(空洞)/|未初始化的数据(统称数据段)初始化的数据正文段(代码段)最低内存地址0x00000000以上图为例如果我们在栈上分配一个unsignedcharbuf4,那么这个数组变量在栈上是如何布局的呢注1?看下图:栈底(高地址)buf3buf2buf1buf0栈顶(低地址)现在我们弄清了高低地址,接着来弄清高/低字节,如果我们有一个32位无符号整型0x12345678(呵呵,恰好
4、是把上面的那4个字节buf看成一个整型),那么高位是什么,低位又是什么呢?其实很简单。在十进制中我们都说靠左边的是高位,靠右边的是低位,在其他进制也是如此。就拿0x12345678来说,从高位到低位的字节依次是0x12、0x34、0x56和0x78。高低地址和高低字节都弄清了。我们再来回顾一下Big-Endian和Little-Endian的定义,并用图示说明两种字节序:以unsignedintvalue=0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsignedcharbuf4来表示value:Big-Endian:低地址存放高位,如下图:栈底(高地址)buf3(
5、0x78)-低位buf2(0x56)buf1(0x34)buf0(0x12)-高位栈顶(低地址)Little-Endian:低地址存放低位,如下图:栈底(高地址)buf3(0x12)-高位buf2(0x34)buf1(0x56)buf0(0x78)-彳氐位栈顶(低地址)在现有的平台上Intel的X86采用的是Little-Endian,而像Sun的SPARC采用的就是Big-Endian。三、例子嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址存放内容0x40010x120x40000x34而在Big-endian模式CPU内存中的存放方式则为:内存地址存放内容0x40010x340x40000x1232bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址存放内容0x40030x120x40020x340x40
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年淮安市楚州区住房和城乡建设局人员招聘笔试参考题库及答案详解
- 2026厦门大学医学院张杰教授课题组助理教授、博士后招聘考试模拟试题及答案详解
- 2026江西抚州市妇幼保健院招聘托育综合服务中心编外聘用人员8人考试模拟试题及答案详解
- 2026浙江衢州市体育运动学校招聘教师1人考试参考题库及答案详解
- 2026西安医学院附属宝鸡医院招聘笔试备考试题及答案详解
- 2026年甘肃省兰州市住房和城乡建设局人员招聘笔试参考试题及答案详解
- 2026年哈尔滨市南岗区住房和城乡建设局人员招聘考试备考题库及答案详解
- 2026年上海市嘉定区住房和城乡建设局人员招聘笔试备考试题及答案详解
- 2026西安市曲江第三中学教师招聘(3人)考试备考题库及答案详解
- 2026年南阳市卧龙区住房和城乡建设局人员招聘考试备考题库及答案详解
- 乡镇(街道功能区)党政领导干部离任经济事项交接表(开发区和园区适用本表-修订)
- 第一单元 文明的产生和古代亚非文明知识点提纲-2026-2027学年统编版九年级历史上册
- 2025年四川省公开遴选公务员笔试(案例分析)试题及答案
- 闲鱼二手摩托车交易合同
- 民办培训机构消防安全教育课件
- 人工气道患者转运安全
- 2026年重庆干部网络测试题及答案
- 留学生入学教育
- 2025年国家开放大学电大本科《园艺植物育种学》期末试题及答案
- 输变电工程质量监督检查大纲
- 安徽省A10联盟2026届高三下学期2月学情检测(开学考)语文试题(含答案)
评论
0/150
提交评论