基本変換を行うC++プログラムを記述しようとしています。
10進数を2から20までの他のすべての整数の底に変換したい。
基本変換のための効率的で実装が簡単なアルゴリズムはありますか?
問題の正確な場所がわかりませんか?基本変換を行うのは非常に簡単で非常に簡単です。手動で行うように行います。
例:
1025(10進数)から基数15:
1025 / 15 = 68 , remainder 5
68 / 15 = 4 , remainder 8
4 / 15 = 0 , remainder 4
基数15の数値は485です
次の2つの問題がある可能性があります。
元のベースからコンピューターのネイティブ整数表現への解析(strtol
はこれで非常に優れています)。
新しいベースにフォーマットします。 (itoa
はこれがかなり得意です)。
自分で作成したい場合は、 div
function をお勧めします。数値とベースを入力すると、右端の桁が分割されます。すべての桁を取得するために繰り返します。
より効率的にしたい場合は、2乗法で除算し、一度に2桁を取得できます(ルックアップテーブルを使用して、両方の桁のASCII文字を取得します)。 これはいくつかの非常に効率的な実装の例です。 別のベースを使用するように変更することは難しくありません。