【问题标题】:To big endian or to little endian? [closed]大端还是小端? [关闭]
【发布时间】:2011-07-19 09:50:50
【问题描述】:

假设我们暂时忽略目标和源硬件。那么,大端还是小端更好呢?

我只是想就这一点达成共识/约定。到目前为止,我收到的最佳指导是“视情况而定”,因此请务必指定。没关系。我会去做的。

然而,在这种情况下,没有必要采取一种或另一种方式。没有遗产,所以我想,“对于当前和新兴的硬件来说,最干净的选择是什么。”

【问题讨论】:

  • 格列佛游记是必读材料。
  • Big-end / little-end 作为术语来自 Swift,他在讨论打开鸡蛋的哪一端时举了一个毫无意义的争论的例子。
  • 您的编码是否真的与 CPU 如此接近以至于这很重要?
  • 这更像是我追求的“按惯例”的美感。关于 CPU 问题——我没有。附近的其他人——是的。
  • 答案当然是“是”。

标签: c# .net c++ hardware endianness


【解决方案1】:

使用硬件中占主导地位的任何东西。或者使用“网络字节顺序”(大端),因为互联网可以。或者随便挑一个。这不重要。

【讨论】:

  • +1 我想知道“网络字节顺序”是什么。泰。至少对我来说再投一次大端序。
【解决方案2】:

不要选择。只需使用您的编译器/平台使用的任何内容。这没有任何麻烦,而且很有效。

如果您正在处理原始网络内容,您可能希望将内容转换为网络字节序或从网络字节序转换,这是大字节序。但是不要因此而弄乱你的整个代码。到了网络写作部分就进行转换。

【讨论】:

  • 这是一种 n 语言的情况。我希望所有语言都能很好地结合在一起。所以我需要选择遗憾。
  • @sgtz:是同一个平台吗?语言是否使用不同的字节序?
  • 语言不是真正的问题,而是系统——如果它是同质的,不用担心,如果是异构的,那么你需要一个通用的通信格式——通常这是大端。但是习惯总是在处理数据之前转换为本地格式(反之亦然)
  • 不一定是同一个平台或机器。
  • @sgtz 选择任何一个(例如 big-endian)并为使用 little-endian 的人进行转换
【解决方案3】:

其实答案是视情况而定

如果您只是想要一个选择,那么由于在 Big Endian 中高位字节在前,您始终可以从第一个字节开始检查正数或负数。

【讨论】:

  • 您可以像x < 0 一样检查正面或负面,不管字节序。字节序与正面或负面无关。这是关于表示,而不是价值观。请不要因此混淆您的代码。
【解决方案4】:

没关系。随便挑一个吧。

这是一个争论不休的话题。一个并不比另一个有什么特别的优势。

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 2011-07-22
    • 1970-01-01
    • 2010-11-03
    • 2014-01-11
    • 2010-09-26
    • 2011-05-10
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多