好吧,“Endianness”主题总是让我有些困惑,但是我从未遇到过任何问题,这些问题甚至要求我考虑一下我使用的二进制编写器/读取器的默认行为。我现在正在用C#编写PNG解码器。 PNG文件格式规范指出,所有数字都以大尾数法表示(我觉得很自然)。但是,当我注意到.NET的BinaryReader/Writer使用一点尾数表示法时,我感到非常惊讶。更让我感到困惑的是,事实是Java的二进制IO使用大端符号(不是Java程序员,所以我可能是错的)。所以我开始考虑以下问题:

1-为什么情况如此?我的意思是基类库的默认行为。
2-为什么在使用.NET的System.IO时无法选择首选符号?

我目前正在使用Jon Skeet's MiscUtil,它的工作原理就像一个 super 按钮(谢谢,man =)。但是在基类库中看到此功能会很酷。

最佳答案

这是因为该代码旨在尽可能在最重要的平台上运行。 C#/。NET来自Microsoft,主要在x86平台上运行。 x86是little-endian,因此使库成为little-endian是有意义的。 Java是由Sun制造的,而Sun SPARC是big-endian的,因此Java标准是big-endian的。

09-30 16:55
查看更多