我正在处理一些比较老的代码,该代码测试了像
鉴于上述测试中存在未定义行为,我可能需要重写部分代码,并想知道是否值得保留此复杂性。我知道(以及如何)编写与系统字节序无关的代码,但这将需要进行许多更改,而我目前没有时间进行这些更改。
short
、int
、long
和long long
等类型的字节序。
是否还有使用中的系统实际上针对不同类型(由于这些类型的不同大小)具有不同的字节序? 我所知道的唯一例子是PDP-11,其中32位值的两个16位半部分以“大端序”存储,而这些16位中的每个8位半部分则以“小端序”存储。鉴于上述测试中存在未定义行为,我可能需要重写部分代码,并想知道是否值得保留此复杂性。我知道(以及如何)编写与系统字节序无关的代码,但这将需要进行许多更改,而我目前没有时间进行这些更改。
long
字节顺序的混乱相比,没有现代系统是如此无政府状态。就个人而言,除非当前运行代码的系统存在混合字节顺序,否则我不会担心混合字节顺序。虽然通常有通过序列化函数系统地处理大端和小端的方法,但你可能需要担心大端和小端之间的区别。 - Jonathan Lefflerfloat
和double
是大端字节序,而int
等则是小端字节序。(我模糊地记得这是因为协处理器是一个几乎未修改的MC68881,设计用于与整个68020系列兼容,而该系列始终采用大端字节序。) 顺便提一下,“更近期”的意思是指上世纪90年代初。现代ARM内置FPU,对所有内容使用一致的字节序。 - zwol