#include<iostream>
#include<cmath>
using namespace std;
int main()
{
string s;//十六进制数s
cin>>s;
int len = s.size();
long long sum=0;
//十六进制转换十进制
for(int i = 0;i<len;i++)
{
//判断s[i]是否在A-F范围,是则与‘A’字符相减计算,否则与‘0’相减计算
if(s[i]-'A'>=0&&s[i]-'A'<=5)sum+=(long long)(s[i]-'A'+10)*(long long)pow(16.0,len-i-1);
else sum+=(s[i]-'0')*(int)pow(16.0,len-i-1);
}
cout<<sum<<endl;
return 0;
}
十进制转十六进制
#include<iostream>
using namespace std;
int main()
{
//定义十六进制数的匹配数组
char decModel[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
long long n;//定义十进制数
cin>>n;
//判断n是否为0,是则输出返回
if(n==0)
{
cout<<n;
return 0;
}
string num="";
//十六进制转换十进制数
while(n)
{
//将十六进制最高位到低位一次换算为十进制最低位到最高位
num+=decModel[n%16];
n/=16;
}
//倒序打印十进制数
for(int i = (num.size()-1);i>=0;i--)
{
cout<<num[i];
}
return 0;
}