我正在尝试编写序列
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;
}
答案 0 :(得分:0)
您正在寻找字符'\03'
或字符串"VOL\03"
。
写字节本身可能更简洁:
int version = 3;
outfile.write(&version,1);