大端和小端

二进制文件的字节顺序问题:
大端字节(big-endian)和小端字节(little-endian)

大小端前传
其实不是很理解为什么会有这个问题,只能理解为 不同的机器有不同的字节存放习惯,从一开始就没有统一,后来一各自发展,也就很难统一了。。。
因为现行的计算机都是以8位一个字节为存储单位,那么一个大于8位整数的存放就存在高位和低位数的存放顺序问题。既然顺序是重要的又没法统一,就需要明确区分一下以便使用了。

我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

大小端
所谓大小端模式就是存储数据时,数据的高低位怎么存储在地址的高低位上。
具体如下:
大端模式:数据的高位,存放在地址的低位。(高位存低位,低位存高位)
小端模式:数据的高位,存放在地址的高位。(高位存高位,低位存低位)

1)大端模式:
低地址 ——————> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ——————> 高地址
0x78 | 0x56 | 0x34 | 0x12

16位数据在大端和小端上的存储位置

可见,大端模式和字符串的存储模式类似。大端与从左到右的阅读习惯一致。

大小端对比
小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。

大小端后传
TCP/IP协议
RFC1700规定使用“大端”字节序为网络字节序,其他不使用大端的计算机要注意了,发送数据的时候必须要将自己的主机字节序转换为网络字节序(即“大端”字节序),接收到的数据再转换为自己的主机字节序。这样就与CPU、操作系统无关了,实现了网络通信的标准化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值