以下代码导致二进制文件,它作为值10的表示前面的附加字节。
int main()
{
unsigned int data0 = 8;
unsigned int data1 = 9;
unsigned int data2 = 10;
unsigned int data3 = 11;
std::ofstream file("test.bin", std::ios_base::out, std::ios_base::binary);
file.write(reinterpret_cast<char*>(&data0), sizeof(data0));
file.write(reinterpret_cast<char*>(&data1), sizeof(data1));
file.write(reinterpret_cast<char*>(&data2), sizeof(data2));
file.write(reinterpret_cast<char*>(&data3), sizeof(data3));
file.close();
return 0;
}
这是文件的hexdump的样子:
08 00 00 00 09 00 00 00 0D 0A 00 00 00 0B 00 00 00
| 8 -> OK | 9 -> OK |??| 10 -> OK | 11 -> OK
这里有10个前面的字节发生了什么?
答案 0 :(得分:4)
std::ofstream file("test.bin", std::ios_base::out, std::ios_base::binary);
应该是
std::ofstream file("test.bin", std::ios_base::out | std::ios_base::binary);
积分转到user4581301。请参阅问题的评论。