c++ - 字节顺序会导致读写操作冲突吗?

标签 c++

就我而言,字节序只影响字节,但我仍然不知道它是否影响单个位。

我知道网络字节顺序。但是,我不确定是否有输入或文件 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/

相关文章:

c++ - 解密 Firefox 密码数据库

C++11:条件变量只适用一次

C++ 指针数组

c++ - Visual Studio 2013 中的默认代码编辑器

c# - 供经验丰富的 C# 用户学习 C++ 的教程

c++ - 通过 std::asio tcp 套接字发送结构

c++ - 用特定分布的非均匀屏幕点填充 vector

c++ - 为什么要有一个指向指针的指针(int **a)?

c++ - 在 C++ 中抛出超出范围的异常

c++ - 编译器会为这个对象保留内存吗?