1

私は C++ が初めてで、通常は C を使用します。しかし、今では、プロジェクトに非常に役立つ特別なアルゴリズムを使用して、一部の情報を圧縮する優れたライブラリを見つけました。次に、このライブラリが答えとしてくれました。文字列ストリームオブジェクトに存在するバイナリデータです。バイナリデータなので、ASCII 文字ではないバイトがいくつかあります。だから私がしたいのは、データを抽出し、16 進数表現を取得することです。どうすればそれができますか?次のコードがあります。

stringstream ss; \\variable in which I got the result from the library
bitset1.write(ss); \\with this instruction I got the binary information from the library

そこから、次のことを試します。

1)印刷するだけです:

cout << hex << ss;

2) str メソッドを使用します。

cout << hex << ss.str();

3) リードバッファ方式を使用します。

cout << hex << ss.rdbuf();

それで、私は何かが足りないと思います、あるいは多分たくさん、誰かが私を助けることができますか?

4

1 に答える 1

1

ショートカットが存在する場合、私はそれを知りません。ただし、これはあなたが望むことをします:

std::cout << std::hex << std::setfill('0');
const std::string s = ss.str();
const size_t slen = s.length();
for (size_t i = 0; i < slen; ++i) {
    const unsigned char c = s[i];
    const unsigned int n = c;
    std::cout << std::setw(2) << n;
}
std::cout << "\n";

重要なのは、ストリーム挿入演算子が特別に扱うため、非char整数型を出力に使用することです。<<char

于 2012-06-18T02:47:55.227 に答える