这个思路就和最开始想的一样 注意:

当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;
}