我的程序很長很複雜,所以我無法解釋這一切,但是我會試着解釋一下我目前的情況。(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