任意进制整数之间的相互转换经常出现在各大IT公司的笔试面试中,这里我对其中的算法和实现代码做个总结。
算法思想:例如,要求将x1进制的数r1转化成为x2进制的数r2,首先应该将r1转化为十进制的数r_decimal,然后再将十进制数r_decimal转化为x2进制的数r2。(1<x1<17&&1<x2<17)
下面是我用C++实现的代码,已经在visual C++ 6.0上测试通过了,程序没有考虑太多的细节(整数和进制合法性的判断等),主要是为了实现算法的思想,如果想做的再好一点,个人感觉应该用类实现,将整数封装成class。
例如,
class Number
{
private:
string num;
int binary;
public:
/*构造函数*/
Number(string num,int binary);//包含对数据合法性的检查
Number(Number num);
int convertToDecimal(string num,int binary);//将任意进制转化为十进制
string decimalToAnyBinary(int decimal,int binary);//将十进制转化为任意进制
Number ToAnyBinary(int binary);//将任意进制转化为任意进制
void showNumber();//打印整数信息
};
程序代码: