53704


現在、c++で多倍長整数クラスBigIntを作成しているのですが、toString()の実装に行き詰まっています。数値を2進数文字列に変換するのはできましたが、それを更に10進数文字列に変換する方法がわかりません。  
2進数文字列を10進数文字列に直接変換する方法がありましたらご教授ください。


CC BY-SA 4.0
2019-03-24T13:54:21.250
53697
2019-03-25T01:20:01.723
2019-03-25T01:20:01.723
3060
question
c++ アルゴリズム
C++で2進数文字列を10進数文字列に直接変換したい


わざわざ２進数文字列を経由しなくても値から直接１０進数文字列にするほうが手っ取り早いです。っていうか `BigInt`
値を２進数文字列に変換できたのなら同様の手続きでｎ進数文字列に変換できるはず。

というわけで質問に対する直接的な答えではなく値の文字列化を行う方法ならば `printf()` や `<iomanip>` で可能な修飾を考えないとき

  * 元の数をｎで割った剰余が１の桁の値なので文字化
  * 元の数をｎで割った商が０になったら終了、０でないとき商を使って繰り返し文字化
  * 下の桁から文字が得られるので逆順に蓄積して出力
  * ｎを１０とすれば１０進数文字列への変換、２なら２進数、１６なら１６進数
  * 前後にちょっと処理が必要だけどｎ＝６４とすれば `base64`

っすよね。実用上は必ず修飾が欲しくなると思います。計算しながら修飾するもよし、シンプル文字列が得られてから加工するもよし。


CC BY-SA 4.0
2019-03-24T23:43:18.027
53704
2019-03-24T23:43:18.027
8589
53697
answer