一个不超过8位的字符串十六进制数转十进制,那么思想很简单,从字符串第一个开始计算,如果为1-9则-'0'直接保存进结果,如果为A-F(a-f)那么就-'A'('a')然后+10保存进结果,如果不为个位,则乘16,以下为代码
#include<bits/stdc++.h>
using namespace std;
int main(void){
string s;
cin >> s;
int n = s.length();
long long num=0;
for(int i = 0; i < n; i++){
if(s[i]>='0'&&s[i]<='9'){
num += (s[i]-'0');
}else if(s[i]>='a'&&s[i]<='f'){
num += (s[i]-'a'+10);
}else if(s[i]>='A'&&s[i]<='F'){
num += (s[i]-'A'+10);
}
if(i<n-1)
{
num *= 16;
}
}
cout<<num;
}
测试输入
结果无误。