在C ++中将无符号数据写入二进制文件

时间:2014-04-08 03:18:58

标签: c++ io binary

我正在尝试编写序列

56 4F 4C 03

作为二进制(unsigned char)到文件中。

在ASCII中,这应该拼出" VOL",根据我的十六进制编辑器,以及对应于字节' 03'的第四个字符。是一个不显示的角色。

以下写道" VOL"正确,但我不知道如何写原始未签名的' 03'数据,因为它是一个非显示字符。我怎样才能做到这一点?我应该使用像0x03这样的标识符进行编码还是更清洁?

int main()
{
    std::ofstream outfile;
    outfile.open ("data.vol", std::ios::out | std::ios::binary | std::ios::app);
    std::string str = "VOL";

    std::string::size_type sz = str.size();
    // when i leave this line out, it writes to string?
    outfile.write(reinterpret_cast<char*>(&sz), sizeof(std::string::size_type));
    outfile.write(str.data(),sz);

    std::string m_version_identifier = "3";
    outfile.write((char*)&m_version_identifier.data()[0],m_version_identifier.size());

    outfile.close();

    std::cout << "done" << std::endl;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您正在寻找字符'\03'或字符串"VOL\03"

写字节本身可能更简洁:

int version = 3;
outfile.write(&version,1);