0

私はこのような文字列を持っています:

315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5

2文字ごとにバイトの16進数表現であることを念頭に置いて、ファイルから文字列オブジェクトに一度に読み取る方法はありますか? つまり、16 進数から char への変換を伴う読み取りが必要です。

更新
みんな、私が尋ねたことを注意深く読んでください。
変換関数を記述し、文字列に沿ってループすることができます。
しかし、一度に 16 進数の文字列を char の文字列に読み取る必要があります。
ループはありません。手による変換はありません。 ありがとう
のようなもの。cin >> ...some string variable...

UPDATE2
string があると想像してください"315c4eeaa8b5"。私は次のようなものを書きたいと思ってcin >> string_varおり、正確に"'0x31','0x5c','0x4e','0xea','0xa8','0xb5'". この最後は序数であることに注意してくださいstd::string。つまり0x31,0x5c,etc、文字のコードです。
それが物事をより明確にすることを願っています。

4

2 に答える 2

1

何かをコーディングするか、すでに存在するものを使用します。C++ IO ストリームを使用している場合は、Boost.IOStreamsライブラリ、特にそのFiltering Streamsの概念を確認することをお勧めします。タブ展開2.2.5.2 input_filterチュートリアルの例を、16 進入力フィルター実装のベースとして使用できます。

于 2013-01-14T10:54:25.233 に答える
0

std::hexマニピュレータでistream::opeartor >>を使用して、16進数として解析できます。

ifstream in("...");
char buffer[3];
vector<char> chars;

while (in.read(buffer, 2))
{
    buffer[2] = '\0';

    char c;
    istringstream(buffer) >> hex >> c;
    chars.push_back(c);
}
于 2013-01-14T10:50:20.610 に答える