进制转换

2020-06-28  本文已影响0人  CristianoC

进制转换掌握好规律即可:10进制转换成x进制即先逐位取余(注意考虑10进制以上进制的情况)再取整,最后记得要反序输出。x进制转10进制则先乘后加即可。这里要小心用例很大的情况,所以要用long long存储。

#include <iostream>
#include <string>
using namespace std;
char s[100];
int main(){
    int before,after;
    string buf;
    while (cin>>before>>after>>buf) {
        int len = buf.length();
        long long ans = 0;
        for (int i = 0; i < len; i++) {
            ans *= before;
            if (buf[i] >= '0' && buf[i] <= '9')
                ans += buf[i] - '0';
            else
                ans += buf[i] - 'A' + 10;
        }
        int cnt = 0;
        while (ans > 0) {
            int tmp = ans % after;
            if (tmp >= 10)
                s[cnt++] = tmp - 10 + 'a';
            else
                s[cnt++] = tmp + '0';
            ans /= after;
        }
        int i = cnt - 1;
        for (i; i >= 0; i--) {
            cout << s[i];
        }
        cout << endl;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读