我正在开发一个将二进制数据写入文件的程序。由于某些原因,在 Windows 上生成的文件比在 Linux 上略小。以字节为单位的大小和 MD5 哈希值都不同。同样的代码怎么会发生这种情况?
我已经添加了 ifstream::binary
标志并且我确保我设置了 noskipws
...
ofstream output("output", ifstream::binary);
output << std::noskipws;
我在我的程序上运行了 Application Verifier,它没有生成任何关于可能的内存损坏的错误或警告。
还有其他原因导致文件输出可能不同吗?
最佳答案
差异可能是由于不同的开发环境。不同的编译器、硬件和操作系统都可以改变底层数据的格式。例如,不同的编译器可能会以不同的效率打包您的数据结构。此外,由于不同的处理器,您的基本类型(整数、长整数、 float 等)的大小可能不同。
简而言之,需要二进制数据之间跨平台兼容性的程序制定了非常精确的规则来将结构和值打包成二进制格式(通常在现场,以及读取数据的同样精确的规则。
关于c++ - 二进制文件在 Windows 上比在 Linux 上小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169545/