视觉C++转换和写入值为 10 的无符号 int 给出 5 个字节



下面的代码导致一个二进制文件,该文件作为值 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;
}

以下是文件的十六进制转储的外观:

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 前面的字节是怎么回事?

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);

信用归用户4581301。请参阅问题的评论。

相关内容

最新更新