次の機能が必要な状況を考えてみましょう。
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進数への変換なしでそのような関数を実装する明確な方法はありますか?
ありがとうございました!