如果您有一个二进制输出流,并在32位Windows计算机上向文件写入整数。那么您是否能够从64位Windows计算机上的同一文件中读取相同的整数?
我的猜测是不行。因为32位计算机上的整数是4个字节,而64位计算机上的整数是8个字节。
因此,以下代码能否正常工作,同时文件必须能够被64位和32位计算机读写,无论操作系统、计算机架构和数据类型如何。如果不能,那么该怎么做,同时文件必须以二进制形式存在。
我的猜测是不行。因为32位计算机上的整数是4个字节,而64位计算机上的整数是8个字节。
因此,以下代码能否正常工作,同时文件必须能够被64位和32位计算机读写,无论操作系统、计算机架构和数据类型如何。如果不能,那么该怎么做,同时文件必须以二进制形式存在。
写入
std::ofstream ofs("example.bin", std::ios::binary);
int i = 128;
ofs.write((char*) (&i), sizeof(i));
ofs.close();
阅读
std::ifstream ifs("example.bin", std::ios::binary);
int i = 0;
ifs.read((char*) (&i), sizeof(i));
ifs.close();
sizeof(int)
都等于4。变化的是long
和指针类型。 - Joe Zsizeof
有关的 这个 Stack Overflow 问题中的内容与我所看到的并不一样。 - vallentin<cstdint>
并使用正确的固定宽度整数类型(例如int32_t
)。 - Zeta