关于大端小端数据存储传输相关个人理解分享。

原创
2018/05/31 05:09
阅读数 115

大端小端,虽然是个简单的问题,经过测试确认当前环境处于什么样的状态并不是很复杂。

但是想简单明了的记住这些概念以及明白他们的目的和相关性,还真不是一两句话能说的清楚的。

 

在这里,我希望我的语言能通俗易懂的为大家记住这些相关知识要点提供一些帮助。

首先说一下, 从定义上:

小端, 内存低地址存储数据低位,内存高地址存储数据高位。
大端, 内存低地址存储数据高位,内存高地址存储数据低位。

是不是觉得定义讲的很难理解? 为了便于理解,首先我们的假想一下,内存存储空间是一个由下向上无限延伸的数据空间,这样我们才能更好的理解内存低位指的是哪部分。网络上很多介绍相关内容的, 我感觉他们都忽略了该如何去理解数据存储。 有的甚至在讲解内存存储的时候,都是错的,以至于讲出来的内容看后更让人摸不到头脑。

废话又多了点,收回来, 继续讲, 内存是由下向上延伸的存储空间, 内存地址0,自燃对应的是最最最下边,也就是内存低地址, 这样讲大家是否理解内存低地址的概念。
对应大端小端的问题, 小端, 内存低地址存储数据低位, 也就是说假如,有个数据,0x1122,在内存里怎么存储呢,相对位置0存储0x22,相对位置1存储0x11。 就是这样, 低对低,高对高。反之,大端存储同样的数据, 相对0位,存储的是0x11,相对1位置,存储的是数据0x22,大端的内存里存储方式。

这些不同的方式,各有利弊,无需讨论。 利弊是针对应用目的的。 在这里, 就必须说下内存里的存储方式到文件存储以后的状态, 很多时候,为了方便整段整段的数据是从内存里的某个地址开始,一个一个字的读取然后写入磁盘里, 读取顺序自燃就是增量的,也就是从相对0位置开始,不断增加。

在这里,回想一下小端数据在内存里是怎么存储的, 没错,内存低地址存储低位。 也就是说, 先读出来的是低位, 后读出来的是高位,如果是个16位的数据,存储按照字节存储。这种方式存进硬盘里就是前面先看到数据低位后面看到数据高位。 这就是小端的由来。

相对应的,大端存储的时候,数据高位存储在内存低地址, 也就是被优先读出来, 自燃读到的是高位。0x1122 这样的数据,先跑出来的是0x11,后来才是0x22, 大端,先跑高位。大端的由来。

在说下网络数据传递,网络传输这些用的是大端模式,先传的是数据高位。而我们常用的台式pc通常是x86体系,采用的是小端。这点需要注意。

希望这样的解释能便于大家记忆。便于大家理解,不至于被绕晕。 如果我有说的不对的地方。欢迎各位看官明确指出,方便改正。也便于自己提高。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部