就我而言,字节序只影响字节,但我仍然不知道它是否影响单个位。
我知道网络字节顺序。但是,我不确定是否有输入或文件 I/O 的标准。更具体地说,类似于 NES ROM 模拟器/解码器。 假设 NES 本质上是小端,翻转了它的所有位,然后大端机器上的 NES 模拟器的程序员不会意识到需要反转这些位才能继续。
当然,如果有一个读取文件静态数据的标准,那将不是问题。
如果小端机器将数据写入文件。直觉上,我忍不住假设这些位是反向存储的。 (我确定保证字节顺序是相反的)
所以如果小端机器写入数据说,一个 ROM 文件,这是否意味着必须翻转它的所有位才能让大端机器读取它?
最佳答案
字节顺序是关于 block 中字节的顺序。
您在一个系统上的位:
byte 1 byte 2 byte 3
ABCDEFGH IJKLMNOP QRSTUVWX
在具有相反字节序的系统上将看起来像这样(中间字节序也存在,但让我们暂时忽略它)直到你纠正它:
byte 1 byte 2 byte 3
QRSTUVWX IJKLMNOP ABCDEFGH
因此字节以不同的顺序读取,但每个字节的值单独没有改变。
但是,如果整数在一个平台上以一种方式(例如,二进制补码)表示,而在另一个平台上以另一种方式(例如,一个补码)表示,则构成整数的位将无法在这些平台之间移植即使您考虑了字节序差异。你必须自己考虑。
关于c++ - 字节顺序会导致读写操作冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59201053/