我的程序很长很复杂,所以我无法解释这一切,但是我会试着解释一下我目前的情况。(C++)将十六进制文件写入.dat文件时出现问题
我有一个.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();
“xboxit-> c_str()”中的ofstream的是那里,因为我输入和从文件列表输出文件的一群,这是必要的,但如果这是有道理的,我不会犯错。
字符串“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文件在其他地方也是一个可接受的选择。
我不能写HEX值,他们总是在DAT文件中显示为文本。
任何帮助,将不胜感激:)
感谢您的快速回复!通过执行\ x事情,这将如何影响十六进制值而不分配给他们的字符?例如:00-> 09是“null”,如果你愿意并且将显示为空格。十六进制数据是否会正确写入文件?另外,我之前从未使用过const,因为我只是一个初学者。我从网上获得了const的代码。我将需要在SOMETHING中存储所有内容,因为它存储的是十六进制数。我每次都不能/ x。 – mrg95 2013-05-09 02:41:05
你刚才编辑过的帖子--->是的,我不知道结构是什么。我可以查看它,但我认为有一种快速简单的方法可以将数据写回来,就像我读过的一样。 – mrg95 2013-05-09 02:43:13
00-> 09是不可打印的字符 - 您无法人工读取它们,但它们会作为文件中的值显示。你可以用一个非常小的代码尝试一下:试着写一个“\ x00 \ x01 \ xothervalues”到一个文件中,然后用十六进制编辑器打开它以获得一个好主意。至于你的第二个问题,这一切都取决于你如何得到你的价值观! – Nbr44 2013-05-09 02:45:07