这个思路就和最开始想的一样 注意:
当s[i]在
0~9
之间的时候,s[i] >= '0' && s[i] <= '9'
而s[i]在10~15
之间的时候s[i] >= 'A' && s[i] <= 'F'
#include <bits/stdc++.h>
using namespace std;
int converseNum(string s) {
int bit = 0;//记录当前位数
int res = 0;
for(int i = s.length() - 1; i > 1; i--) {
if(s[i] >= '0' && s[i] <= '9') {
res += (s[i] - '0') * pow(16, bit);
bit++;
}
else if(s[i] >= 'A' && s[i] <= 'F') {
res += (s[i] - 'A' + 10) * pow(16, bit);
bit++;
}
}
return res;
}
int main() {
string s;
getline(cin,s);
cout<< converseNum(s)<<endl;
return 0;
}