我的程序很长而且很复杂,所以我无法解释全部,但是我会尽量解释我目前的情况。
我有一个 .dat 文件(其中 729 个,但在本例中只有 1 个),我需要用几个包含十六进制值的字符串覆盖整个文件(即使我的新数据小于当前数据)。
这是我的程序的一个片段:
ofstream xbox_final(xboxit->c_str(), ios::binary);
//other stuff
xbox_final.write("0a00000a00054c6576656c070006426c6f636b7300008000", 48);
xbox_final.write(new_bytes, new_bytes.length());
xbox_final.write(xboxbytes, xboxbytes.length());
xbox_final.close();
ofstream 中的“xboxit->c_str()”在那里,因为我正在从文件列表中输入和输出 BUNCH 文件,这是必要的,但如果这有意义的话,不会给我任何错误。
字符串“new_bytes”和“xboxbytes”包含十六进制值(000007000a0445 等...)
现在我的程序刚刚写入一个文本文档。我需要它按顺序将十六进制数据写入 .dat 文件。
我做了一些搜索,这解决了 const char 问题:
//other stuff
string header("0a00000a00054c6576656c070006426c6f636b7300008000");
WriteStr2BinFh( header, xbox_final);
WriteStr2BinFh( new_bytes, xbox_final);
WriteStr2BinFh( xboxbytes, xbox_final);
//other stuff
void WriteStr2BinFh( const std::string& St, std::ostream &out )
{
out.write( St.c_str(), St.size() );
}
在其他地方创建新的 .dat 文件也是一种可接受的选择。
我只是不能写十六进制值,它们总是在 DAT 文件中显示为文本。
任何帮助,将不胜感激 :)