决定了,以后遇上进制转换就这么写!
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int charToint(char num) {
if (num >= '0' && num <= '9') {
return num - '0';
} else if (num >= 'a' && num <= 'z') {
return num + 10 - 'a';
} else if (num >= 'A' && num <= 'Z') {
return num + 10 - 'A';
}
return 0;
}
char intTochar(int num) {
if (num > 9) {
return num - 10 + 'A';
} else {
return num + '0';
}
}
int main() {
int a, b;
char n[1001];
while (scanf("%d%s%d", &a, n, &b) != EOF) {
string str = n;
long long int res = 0;
for (int i = 0; i < str.size(); i++) {//x进制转十进制
res *= a;
res += charToint(str[i]);
}
vector<char> ans;
while (res != 0) {//十进制转x进制
ans.push_back(intTochar(res % b));
res /= b;
}
for (int i = ans.size() - 1; i >= 0; i--) {
printf("%c", ans[i]);
}
printf("\n");
}
return 0;
}

京公网安备 11010502036488号