1

次の機能が必要な状況を考えてみましょう。

convert(val1, base1, base2)

val1数 ( ) をbase1数体系から数体系に変換しbase2ます。この関数では、すべての引数は文字列です。

convert("34", "012345", "01234567890ABCDEF") 

34 6 -> X 16を変換するために呼び出されます。

実装を考え始めたとき、基数の大きい数値を基数の小さい数値に変換するには、基数の大きい数値に対して定義された除算演算が必要であることが明らかになりました。たとえば、12 10 -> X 2 = 12 / 2 | 6 / 2 | 3 / 2 | 1 / 2 | = 1100 2 .

次は、X b1 -> X 10 -> X b2の2段階変換を行うことについてでした。これは間違いなく実装が簡単ですが、前の結論で間違っていないことを確認できますか、またはconvert()中間から10進数への変換なしでそのような関数を実装する明確な方法はありますか?

ありがとうございました!

4

1 に答える 1

4

コンピューター プログラムで実用的な解決策を探していると仮定すると、基数 10 に中間的に変換するのではなく、基数が無関係なコンピューターのネイティブ表現に変換する必要があります。2 つの別個の関数を作成します。1 つは文字列を解析して整数に変換し、もう 1 つは整数を文字列に変換します。

于 2012-06-12T21:21:59.603 に答える