a 为输入数的进制
b 为要转化的进制
16 进制变 2, 8,10
反之不行
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
typedef unsigned long long ll;
const ll MAXN = 10000;
char str[10000];
int ans[10000];
ll a, b;
int change(char c) {
if(c >= '0' && c <= '9') return c - '0';
else if(c >= 'a' && c <= 'f') return (c - 'a' + 10);
else if(c >= 'A' && c <= 'F') return (c - 'A' + 10);
return 0;
}
int main() {
a = 16;
b = 8;
ll kase, flag, result;
kase = 0, flag = 0, result = 0;
scanf("%s", str);
int len = strlen(str);
for(int i = 0; i < len; i++)
result += pow(a, len-i-1) * change(str[i]);
if(b == 10) printf("%lld\n", result);
else {
while(result) {
ans[kase++] = result % b;
result /= b;
}
for(int i = kase-1; i >=0; i--)
printf("%d", ans[i]);
printf("\n");
}
return 0;
}