我希望能够将一个字符指针作为输入,该指针指向一个以 2 到 16 为基数的数字,并作为第二个参数,该数字所在的基数,然后将其转换为以 2 为基数的表示形式。整数可以是任意长度。我的解决方案现在执行 atoi() 函数的功能,但如果查找表解决方案是可能的,我纯粹出于学术兴趣而感到好奇。
我发现这对于二进制、八进制和十六进制都很简单。我可以简单地为每个数字使用查找表来获取一系列位。例如:
0xF1E ---> (F = 1111) (1 = 0001) (E = 1110) ---> 111100011110
0766 ---> (7 = 111) (6 = 110) (6 = 110) ---> 111110110
1000 ---> ??? ---> 1111101000
但是,我的问题是我想为奇数基数(例如基数 10)执行此查找表方法。我知道我可以像 atoi 那样编写算法并执行一堆乘法和加法,但是对于这个特定问题我我想看看我是否可以用查找表来做到这一点。不过,以 10 为底的情况肯定不是那么明显。我很好奇是否有人有任何聪明的方法来弄清楚如何为 Base X -> Base 2 生成通用查找表。我知道对于 base 10,你不能一次只给它一个数字,所以解决方案可能必须一次查找一组数字。
我知道乘法和加法解决方案,但由于这些是任意长度的数字,所以乘法和加法操作不是免费的,所以如果可能的话,我想避免它们。