c++ - Endianness 是否会成为这种类型的二进制 IO 操作的问题?

标签 c++ file save endianness

为了节省空间,我决定使用二进制对我的保存文件进行编码。每个字节代表一个 tile 类型的 id。这会导致不同的 Endian 计算出现问题吗?

另外,出于好奇,设置 Endian 类型的是 CPU 还是操作系统?

附加信息:我正在使用 C++ 构建一个 x 平台游戏。我不想使用额外的 API,例如 Boost。

最佳答案

是的,它会导致问题 - 如果从 BE 保存的文件在 LE 上加载,反之亦然。这就是为什么一些 Unicode 编码(例如 UTF-16 和 UTF-32)具有所谓的字节顺序标记的原因。

如果您的代码通常是在 BE 上编译的,您仍然必须确保 LE 代码在使用数据之前会交换字节顺序。

CPU 设置 Endianess,一些芯片(例如一些 MIPS CPU)允许在引导系统时切换。

关于c++ - Endianness 是否会成为这种类型的二进制 IO 操作的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611979/

相关文章:

python - 使用 readlines() 是比创建列表更好的方法吗?

ios - 使用 multipartFormData 请求 Swift 保存 Alamofire 上传

c++ - 我应该着手创建一个程序以将信息存储到文件中、编辑该文件中的信息并添加新信息的最佳方法是什么

c++ - 继承构造函数并提供新的重载 : no arguments base constructor seems to not participate in overload resolution

android - 如何将我的文件从一个目录复制到另一个目录?

c - fread() 和 fwrite 在 C 编程中的工作原理

ios - 无法保存 plist ios

c++ - 为什么我的 Woodall 数计算程序在 n >47 后产生错误的结果?

c++ - C中1的稀疏矩阵的快速矩阵乘法

C++:new,内存理解题