16

ベース変換を行う C++ プログラムを作成しようとしています。

10 進数を 2 から 20 までの他のすべての整数基数に変換したいと考えています。

ベース変換のための効率的で実装が簡単なアルゴリズムはありますか?

4

2 に答える 2

35

どこに問題があるのか​​わかりませんか?基本変換を行うのは非常に簡単で簡単です。手作業で行うのと同じように行います。

  • ベースで割る
  • 残りを書き留めます
  • 除算の整数部分でプロセスを繰り返します
  • ゼロに達したら停止します
  • 余りは逆の順序で、ベースの桁を示します

例:

1025(10進数)からベース15:

1025 / 15 = 68 , remainder 5
68   / 15 =  4 , remainder 8
4    / 15 =  0 , remainder 4

ベース15の数は485です

于 2012-10-03T17:53:55.823 に答える
3

2つの問題が発生する可能性があります。

  • 元のベースからコンピューターのネイティブ整数表現への解析(strtolこれは非常に優れています)。

  • 新しいベースにフォーマットします。(itoaこれはかなり得意です)。

自分で書きたい場合は、div関数が好きかもしれません。数値と基数を入力すると、右端の桁が分割されます。すべての桁を取得するために繰り返します。

より効率的にしたい場合は、ベースの2乗で除算し、一度に2桁を取得できます(ルックアップテーブルを使用して、両方の桁のASCII文字を取得します)。 これは、いくつかの非常に効率的な実装の例です。 別のベースを使用するように変更することは難しくありません。

于 2012-10-03T17:54:50.940 に答える