0

以下のように、テキスト ファイルにテキストとして格納されている 16 進データの行を、char として格納されている 16 進データに変換したいと思います。

テキスト ファイルの内容:

41:89:47:AB

A7:33:1D:AC

希望のフォーマット:

char Data[NumberOfLinesInFile][HexPerLine];

1 行あたりの 16 進数の数は固定されていることに注意してください。

データは次のようになります。

Data[0][0] = 0x41;
Data[0][1] = 0x89;
Data[0][2] = 0x47;
Data[0][3] = 0xAB;
Data[1][0] = 0xA7;
Data[1][1] = 0x33;
Data[1][2] = 0x1D;
Data[1][3] = 0xAC;

私が抱えている問題は、テキスト行を「:」で区切って、ASCII などではなく 16 進数として解釈するのに苦労していることです。

誰かがこれについてどうすればよいかについての洞察を提供できれば、私は感謝しています。ここ3日間、ずっと髪を引っ張っています。

前もって感謝します!

4

1 に答える 1

1

主な潜在的な問題は、コロンで区切られた 16 進値の行を読み取ることです。最も簡単な方法は、各行を文字列に読み取り、コロンをスペースに置き換え、基数を 16 進数に設定した後に値を読み取るようです。

for (std::string line; std::getline(in, line); ) {
    std::replace(line.begin(), line.end(), ':', ' ');
    std::istringstream in(line);
    std::vector<unsigned char> values{ std::istream_iterator<int>(in >> std::hex),
                                       std::istream_iterator<int>() };
    // now distribute the chars
}

あまり複雑ではないようです...

于 2013-11-14T01:13:28.710 に答える