不应该反转字节序定义吗?

时间:2015-11-21 11:34:24

标签: bytearray endianness

我在字节流方面做了很多工作,所以我理解了这个概念 - 一些字节表示比其他字节更高的数值。

在阅读关于定义的维基时,我变得非常困惑。

当我看到“Big-endian”或BIG + END这个词时,我的期望是最后/结束字节是最大的。没问题吧?

对那些根本不了解字节序的人的例子:存储在索引0和索引1的字节0x01 0x00将等于1,最后一个字节是有效的,等于256,第一个字节是有效的。 (一个字节给出2 ^ 8个选项,2 ^ 8 = 256)

显然,如果最后一个字节是最重要的,我会称之为“大端”。

但不,阅读维基百科的定义恰恰相反: 最后一个字节的重要性称为little-endian,第一个字节的重要性称为big-endian。

是什么给出了?

2 个答案:

答案 0 :(得分:2)

嗯,从历史上看,这些术语来自格列佛游记(是的,每个人都有维基百科),在那里他们意味着用来破解煮鸡蛋的结束。由于该端可能指向下方,因此可以与较低的地址相关联。此外,一个人正在使用那个“消费”或“处理”一个鸡蛋,处理数据通常从较低的地址开始。也就是说,人们可以争辩说,一个人不必知道一个术语的起源就可以正确地解释它。 但无论如何,几乎任何一个主题都有“两种类型的人”,所以对一个群体来说显而易见的可能与另一个群体相反。

答案 1 :(得分:2)

不要将 end 这个词视为最后一个部分或暂时的最后一个部分。

相反,将 end 这个词想象成长物体的两个空间末端,如扫帚或勺子(或鸡蛋!)。因此,长对象可以有两个方向,"错误的结束第一个"或者"对(正确)先结束"。现在,对于扫帚或勺子,大多数人都可以同意哪种方向是正确的,哪种方向是错的(不好"结束")。然而,对于一对数据值,有些人首先选择一端,而另一端则优先选择另一端。

请参阅安东的答案,了解最初的煮鸡蛋吃的结尾模仿。