废话不多,直接上代码:
#include <iostream>
#include <cmath> //要用到pow()函数必须要这个库
using namespace std;
int main()
{
string str;
int long long sum=0; //用long long防止转换10进制数过大溢出
cin>>str;
for(int i=0;i<str.length();i++)
{
if(str[i]-'0'>=0&&str[i]-'0'<=9) //直接用ASCII码转换成int类型进行计算,这里是数字0-9
{
sum+=(str[i]-'0')*pow(16,str.length()-1-i); /*字符串是从0开始;而str.length()是
从1开始,故减1;再减i得到几次方*/
}
else //这里是字母A-F
{
sum+=(str[i]-'A'+10)*pow(16,str.length()-1-i);
}
}
cout<<sum;
return 0;
}
还有许多特殊情况没有解决,例如非法字符、有空格等。
如有不足还请多多指教