注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

大端小端  

2013-02-26 11:00:37|  分类: 自己工作中用到的 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

出处:http://cache.baiducontent.com/c?m=9d78d513d99c1aed19fa950e1a66d071685297624cc0a01368a7975fe2664c363171e2cb30531413a7c06b6671b8382ffd813365367337c79ddffc4bcacb963f5ef83035000bf63105a312b8ba3532b025875b99b86fe5ad833184afa2c4af5044bb23127bf0e7fb5c1767ce7881162694d08e49654861befa4460eb1e3777907906f005eee141731ad1a880095bc35d913a4dc4b835c76f4fea04a4684a7859e151e1560c7327e73b23f4406a06c2e00de5297b4326b249f8aec1c1b10ed382&p=9e70c216d9c041ff57ed947a1e4fcb7a&newp=8162c3148b904eac58f7c4710d16d3205c5bc4387ebad0167bce&user=baidu&fm=sc&query=mips%B5%C4%B4%A6%C0%ED%C6%F7%CA%C7%B4%F3%B6%CB%BB%B9%CA%C7%D0%A1%B6%CB%B4%A6%C0%ED%C6%F7&qid=&p1=1

 

 
大小端的问题,指的是字长大于8bit的处理器,在处理一个字的时候,将其拆分成多个字节的表示方法。
对于大端处理器,高位在低地址,低位在高地址。如0x12345678,在内存中这样表示:
地址 00 01 02 03
数据 12 34 56 78
一般,ARM/MIPS/PPC都是大端处理器。
 
而对于小端处理器,低位在低地址,高位在高地址。0x12345678这样排列:
地址 00 01 02 03
数据 78 56 34 12
x86属于小端。
 
这两种排列方法没有好坏之分,但是,对于不同体系结构的处理器之间通讯的时候,有可能产生问题。如MIPS机器发送0x12345678,到了x86接收的时候,就成了0x78563412。
 
因此,人们制定了网络字节序——和大端字节序一致,高字节先发,低字节后发。这样,对于x86和MIPS/ARM/PPC处理器,对数据的处理流程就不一样了。x86需要将收到的数据按字节序颠倒以后处理,而MIPS/ARM/PPC可以直接处理。编写程序的工程师们为了让代码可移植,定义了以下的宏:
htonl /× 主机序转网络序,long int类型 ×/
ntohl /× 网络序转主机序,long int类型 ×/
htons /× 主机序转网络序,short int类型 ×/
ntohs /× 网络序转主机序,short int类型 ×/

对于小端处理器,这个宏返回颠倒字节序后的值,而对于大端处理器什么都不做。
 
  评论这张
 
阅读(434)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018