ベース変換を行う C++ プログラムを作成しようとしています。
10 進数を 2 から 20 までの他のすべての整数基数に変換したいと考えています。
ベース変換のための効率的で実装が簡単なアルゴリズムはありますか?
ベース変換を行う 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
関数が好きかもしれません。数値と基数を入力すると、右端の桁が分割されます。すべての桁を取得するために繰り返します。
より効率的にしたい場合は、ベースの2乗で除算し、一度に2桁を取得できます(ルックアップテーブルを使用して、両方の桁のASCII文字を取得します)。 これは、いくつかの非常に効率的な実装の例です。 別のベースを使用するように変更することは難しくありません。