打印

【转】大端小端存储问题解析

[复制链接]
1212|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

说明:在单片机,dsp或者是上位机通讯接口开发及文件读取等应用中常常会遇到存储结构上大端还是小端的问题,如果不清楚时常会出现数据错位等,比较容易造成困惑,这里对大端小端存储问题进行解析,方便参考应用。


首先,存储结构都是以字节为单位组织的,不管字长是多少位的都没关系。所以用UltraEdit打开文件后用十六进制编辑看从左到右从上到下是以字节地址递增的。那么大端模式和小端模式是啥意思?

  • Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  • Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 —————–> 高地址
 0x12 | 0x34 | 0x56 | 0x78

2)小端模式

低地址 ——————> 高地址
 0x78 | 0x56 | 0x34 | 0x12

可见,大端模式和字符串的存储模式类似。

所以再利用UltraEdit查看文件时,需要注意到存储形式是大端还是小端,如果是大段那就应该看到数据格式为:0x12 | 0x34 | 0x56 | 0x78  这样排列,而如果是小端,则看到的数据格式为:0x78 | 0x56 | 0x34 | 0x12。


相关帖子

沙发
vibra2016| | 2017-2-28 20:14 | 只看该作者
我一般见到的都是采用的大端模式的

使用特权

评论回复
板凳
vibra2016| | 2017-2-28 20:14 | 只看该作者
不管怎样,一定要保证两端数据的数据格式一致

使用特权

评论回复
地板
zhangbo1985| | 2017-2-28 20:51 | 只看该作者
看来这个分享还是非常及时的,,

使用特权

评论回复
5
zhangbo1985| | 2017-2-28 20:51 | 只看该作者
大小端的数据格式的,跟我平时理解的刚好反了的

使用特权

评论回复
6
baimiaocun2015| | 2017-2-28 21:03 | 只看该作者
这个介绍非常浅显易懂的。

使用特权

评论回复
7
sdlls| | 2017-2-28 21:24 | 只看该作者
这个DSP设置的时候才涉及到大小端的问题

使用特权

评论回复
8
sdlls| | 2017-2-28 21:26 | 只看该作者
单片机不是都是大端设计吗

使用特权

评论回复
9
selongli| | 2017-3-1 21:41 | 只看该作者
这个大小端一般都是大端。

使用特权

评论回复
10
selongli| | 2017-3-1 21:45 | 只看该作者
sdlls 发表于 2017-2-28 21:24
这个DSP设置的时候才涉及到大小端的问题

DSP在CCS里面能够设置大小端。

使用特权

评论回复
11
xietingfeng| | 2017-3-2 22:47 | 只看该作者
这个对运算没有什么要求。

使用特权

评论回复
12
xietingfeng| | 2017-3-2 22:48 | 只看该作者
都可以在编译环境设置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

97

帖子

0

粉丝