入力として、基数 2 から 16 の数値への文字ポインターを取得し、2 番目のパラメーターとして、数値の基数を取得し、それを基数 2 の表現に変換できるようにしたいと考えています。整数は、任意の長さ。私のソリューションは atoi() 関数が行うことを実行するようになりましたが、ルックアップ テーブル ソリューションが可能であるかどうか、純粋に学問的な関心から興味がありました。
これは、2 進数、8 進数、および 16 進数の場合は単純であることがわかりました。一連のビットを取得するには、各桁のルックアップ テーブルを使用するだけです。例えば:
0xF1E ---> (F = 1111) (1 = 0001) (E = 1110) ---> 111100011110
0766 ---> (7 = 111) (6 = 110) (6 = 110) ---> 111110110
1000 ---> ??? ---> 1111101000
ただし、私の問題は、基数 10 のような奇数の基数に対してこのルックアップ テーブル メソッドを実行したいということです。atoi のようにアルゴリズムを記述して、多数の乗算と加算を実行できることはわかっていますが、この特定の問題については「ルックアップテーブルでそれができるかどうかを確認しようとしています。ただし、基数が 10 の場合はそれほど明白ではありません。基数 X -> 基数 2 の一般的なルックアップ テーブルを生成する方法を理解する賢い方法を誰かが持っているかどうか興味がありました。基数 10 の場合、一度に 1 桁ずつ与えることはできないのでソリューションでは、一度に数字のグループを検索する必要がある可能性があります。
乗算と加算のソリューションは認識していますが、これらは任意の長さの数値であるため、乗算と加算の操作は自由ではないため、可能であれば回避したいと考えています。