3

(我知道很多人会很想结束这个问题;请不要;我要求提供具体的技术答案,如果有的话。)

由于无法在 stackoverflow 上询问的原因,“网络字节顺序”是大端的。许多旧协议使用该顺序并且无法更改,但我想知道是否有任何技术原因为新协议选择大端。

我认为 little endian 更好,因为 99.99% 的处理器在使用中都是 little endian(ARM 在技术上可以同时做到这两种,但实际上它总是设置为 little endian)。所以我很惊讶地看到 CBOR,一个相对较新的协议,使用大端。有没有我没有想到的优势?

4

1 回答 1

1

它归结为人为因素: 如果它首先使用最高有效字节进行编码,则更容易在十六进制转储中读取多字节整数。 例如,0x1234 (4,660) 的 CBOR 表示是字节序列 19 12 34。如果您正在寻找值 0x1234,则更容易以这种方式发现它。

TLDR;

我已经在这个领域工作了 40 多年,所以这背后有很多历史。即使是“字节”的定义在这么多年里也发生了变化,所以这可能需要一点开放的心态来理解它是如何演变的。

二进制信息的转储并不总是以字节为单位,也不是十六进制的。例如,PDP-11(具有 16 位字和 8 位字节)使用八进制表示法字宽转储很常见。这很有用,因为机器架构包含 8 个寄存器和 8 种寻址模式,因此八进制的机器语言转储比十六进制更容易解码。

于 2018-04-29T16:31:39.173 回答