我遇到了这个问题:
“给定一个整数,编写一个程序,将给定的数字转换为数字(基数为10)。给定的数字可以在任何基数中,但基数是未知的。”
提供算法
提前致谢。
答案 0 :(得分:3)
使用strtol
从任何基础转换为计算机的本机整数格式。然后使用itoa
转换为基数10表示。
答案 1 :(得分:2)
给定数字k作为数字序列a n a n-1 ... a 0 在某个基数b中,此值等于
a n b n + a n-1 b n - 1 + ... + a 0 b 0
因此,如果给出k和基数b的数字,那么一个简单的算法就是以相反的顺序迭代数字,用b的适当幂对每个数字进行缩放并将它们全部加在一起。
答案 2 :(得分:0)
int base10dig(char dig) { ... } int trans(char *num, int base) { //the given number is represented as a string int ans = 0; for (int i = 0 ; num[i] != 0 ; i++) { ans = ans * base + base10dig(num[i]); //base10dig() is a mapping from a digit (char type) in given base to the base 10 (int type) //for example, if the given base is 16, so you should define //base('0') = 0, base('1') = 1, ... base('9') = 9, base('A') = 10... } return ans; }