1

重複の可能性:
1と0の文字列を2進値に変換する

C++でバイナリ文字列を整数文字列に変換したいと思います。例えば:

"000000000010"になります"2"

次の制約があります。この文字列を整数型に変換してから、再度文字列に変換することはできません。これは、そのバイナリ文字列が非常に大きくなる可能性があるためです。

stringstreamフラグを付けてバイナリ文字列を挿入し、フラグstd::stringstream::binaryを使用してコンテンツを出力して、すでにそれを実行しようとしましたstd::decが、機能しません

よろしくお願いします。

4

3 に答える 3

11

std::bitsetからを作成し、またはをstd::string使用して整数を取得できます。エンディアンの世話をするようにしてください、それはあなたのために行われていません。std::bitset::to_ulongstd::bitset::to_ullong

整数からの文字列が必要な場合は、を使用しますstd::to_string

于 2012-08-21T14:08:09.833 に答える
3

あなたはこのようにそれについて行くことができます:

  • 「0」を含む新しい出力文字列を作成します
  • (反転された)元の文字列の各文字に対して:
    • 結果に2を掛けます(桁ごと、キャリーの世話をします)
    • 数字がaの場合'1'、結果に1を追加します(上記のように)
  • 結果を逆にします(使用std::reverse
于 2012-08-21T14:14:52.023 に答える
0

頭のてっぺんから、累積値0から始めて、バイナリ文字列を右から左に読み取ります。各ビットについて、累積値に2を掛け、ビットが1の場合は、累積値に1を加算します。累積値が9より大きい場合は、10で割り、余りを文字として書き出します。これにより、10進文字が逆の順序で表示されます。

どうでも。これは機能しません。

于 2012-08-21T14:15:50.257 に答える