在具有任意基数的数字系统之间转换

时间:2012-06-12 21:17:43

标签: algorithm math logic

考虑一种情况,需要以下功能:

convert(val1, base1, base2)

它将数字(val1)从base1数字系统转换为base2数字系统。在此函数中,所有参数都是字符串,例如

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

调用以转换34 6 - &gt; X <子> 16

当我开始考虑实现时,显而易见的是,将具有较大基数的数字转换为较小的数字需要针对较大基数中的数字定义的除法运算,例如, 12 10 - &gt; X 2 = 12/2 | 6/2 | 3/2 | 1/2 | = 1100 2

下一个是关于进行2步转换X b1 - &gt; X 10 - &gt; X <子> B2 。这肯定更容易实现,但伙计们,您能否确认我在之前的结论中没有错,或者是否有明确的方法来实现这样的convert()函数而没有中间的十进制转换?

谢谢!

1 个答案:

答案 0 :(得分:4)

假设您正在寻找计算机程序中的实用解决方案,您不希望转换为基础10作为中间体,而是转换为计算机的本机表示,其基础是无关紧要的。编写两个单独的函数,一个用于将字符串解析为整数,另一个用于将整数转换为字符串。