C ++转换和写入值为10的unsigned int给出了5个字节

时间:2018-06-01 05:24:42

标签: c++ visual-c++

以下代码导致二进制文件,它作为值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个前面的字节发生了什么?

1 个答案:

答案 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。请参阅问题的评论。