在新协议中,网络字节顺序有什么优点吗?



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

"网络字节顺序"是大端序的,其原因不能在堆栈溢出上询问。许多旧协议使用该顺序并且无法更改,但我想知道是否有任何技术原因为新协议选择大端序。

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

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

TLDR;

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

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

最新更新