将整数转换为基数10.给定数字可以在任何基数中

时间:2011-02-25 03:34:03

标签: c++ c algorithm

我遇到了这个问题:

“给定一个整数,编写一个程序,将给定的数字转换为数字(基数为10)。给定的数字可以在任何基数中,但基数是未知的。”

提供算法

提前致谢。

3 个答案:

答案 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;
}