字节序

software

字节序(endian),即字节存储次序,表示数据在电脑中存储的序列与是高位在前还是低位在前。

常见的字节序有两种:

  1. Little endian (LE)
  2. Big endian (BE)

LE 符合人类的直观感觉,内存高(低)位对应数字高(低)位。BE 符合计算机的逻辑,只需要按照内存顺序从低到高写入数值。

据 Jargon File 记载,endian 这个词来源于 Jonathan Swift 在 1726 年写的讽刺小说 “Gulliver’s Travels”(《格利佛游记》)。该小说在描述 Gulliver 畅游小人国时碰到了如下的一个场景。在小人国里的小人因为非常小(身高6英寸)所以总是碰到一些意想不到的问题。有一次因为对水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开的争论而引发了一场战争,并形成了两支截然对立的队伍:支持从大的一端剥开的人Swift就称作Big-Endians,而支持从小的一端剥开的人就称作Little-Endians……(后缀 -ian 表明的就是支持某种观点的人)。

1980年,Danny Cohen在其著名的论文”On Holy Wars and a Plea for Peace”中为了平息一场关于在消息中字节该以什么样的顺序进行传送的争论而引用了该词。该文中,Cohen非常形象贴切地把支持从一个消息序列的最高位开始传送的那伙人叫做Big-Endians,支持从最低位开始传送的相对应地叫做Little-Endians。此后Endian这个词便随着这篇论文而被广为采用。

在路由器安装 CHFS 时遇到选择处理器架构的问题。小米 R3P 是 MIPSLE,开始没明白 LE 是什么意思,以为是「low edition」,直到百度到有人说是「little endian」之意,才恍然大悟。

MIPS 的字节序

MIPS 架构的一个特性是除了 R8000 以外的所有处理器都可以设置字节序的模式,既能在大字端、也能在小字端运行。……

小米路由器的字节序

小米家的字节序据说都是 LE 的。