質問: 現在、c++で多倍長整数クラスBigIntを作成しているのですが、toString()の実装に行き詰まっています。数値を2進数文字列に変換するのはできましたが、それを更に10進数文字列に変換する方法がわかりません。 2進数文字列を10進数文字列に直接変換する方法がありましたらご教授ください。
回答: わざわざ2進数文字列を経由しなくても値から直接10進数文字列にするほうが手っ取り早いです。っていうか `BigInt` 値を2進数文字列に変換できたのなら同様の手続きでn進数文字列に変換できるはず。 というわけで質問に対する直接的な答えではなく値の文字列化を行う方法ならば `printf()` や `` で可能な修飾を考えないとき * 元の数をnで割った剰余が1の桁の値なので文字化 * 元の数をnで割った商が0になったら終了、0でないとき商を使って繰り返し文字化 * 下の桁から文字が得られるので逆順に蓄積して出力 * nを10とすれば10進数文字列への変換、2なら2進数、16なら16進数 * 前後にちょっと処理が必要だけどn=64とすれば `base64` っすよね。実用上は必ず修飾が欲しくなると思います。計算しながら修飾するもよし、シンプル文字列が得られてから加工するもよし。