0
16進値を持つバイナリファイルがあります。たとえば1d 31 30 2e 30 30 2e 38 33 5f 75 66 6c 78 3b 30
バッファに16進数形式の値を挿入します。
私はifstream
を使用してデータを読み取り、処理するC++プロジェクトを持っています。
バッファーの値を変更します。例えば。 1d
は0a
に変更する必要があります。
以下は私のコードです。ここでの問題は、0a
の代わりにa
という値が得られることです。バッファに完全な16進数字を挿入するにはどうしたらいいですか?
void TestMethod()
{
std::ifstream m_inputFile;
m_inputFile.open("c:\\temp.bin", std::ofstream::in | std::ofstream::binary);
char* buff = new char[300];
m_inputFile.read(buff, 300);
UpdateData(buff, 10);
}
void UpdateData(char* buffer, int val)
{
int POSITION = 32;
char capID[2];
itoa(val, capID, 16);
std::memcpy(&buffer[POSITION], &capID, sizeof(buffer[POSITION]));
}
提案pls。おかげさまで
「\ x1D」と「 'x0A」は16進数ではなく制御文字です。 '' \ x2E''は ''。 ''と同じです。等々。この例の文字の多くは16進数ではありません。 「\ x0A」と「\ xA」はまったく同じです。私はあなたが混乱するかもしれないと思う。 – AlexP
完全なバイナリデータを追加しませんでした。これらは無視されるヘッダーの一部です。 – killer