任意进制数之间的转换
程序代码:
#include<iostream> #include<string> using namespace std; //任意进制之间的转换 /** * s1 转换之前的数 * s2 转换之后的数 * d1 原进制数 * d2 需要转到的进制数 * 高于9的位数用大写'A'~'Z'表示,2~16位进制通过验证 */ void conversion(string s1,string &s2,long d1,long d2){ long i, j, t, num; char c; num = 0; for ( i = 0; i < s1.size(); i++){ if (s1[i] >= '0'&&s1[i] <= '9'){ t = s1[i] - '0'; } else t = s1[i] - 'A' + 10; num = num*d1 + t; } i = 0; s2 = ""; while (1){ t = num%d2; num /= d2; if (t <= 9)s2 = to_string(t)+ s2; else s2 = (char)((t - 10 + 'A')) + s2; if (num == 0)break; } } int main(){ string str1, str2; long d1, d2; while (cin >> str1 >> d1 >> d2){ conversion(str1, str2,d1, d2); cout << str2 << endl; } return 0; }
论坛还没有这样的东西,俺整了个试试,有点不对,是哪呢?