对于这种类型的二进制IO操作,Endianness会出现问题吗?

Joh*_*han 2 c++ file save endianness

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

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

附加信息:我正在使用C++并构建一个x平台游戏.我不想使用其他API,如Boost.

0xC*_*22L 5

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

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

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