资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
分析:用字符数组来操作,乘于权值,十六进制最高到八位int范围,所以要用long long类型
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a[10005];
long long t,sum=0,x=0,j=0,k=0;
string str;
cin>>str;
int len=str.size();
for(int i=len-1;i>=0;i--)
{
if(str[i]>='0'&&str[i]<='9')
{
t=str[i]-'0';
}
else
switch(str[i])
{
case 'A':
{
t=10;
break;
}
case 'B':
{
t=11;
break;
}
case 'C':
{
t=12;
break;
}
case 'D':
{
t=13;
break;
}
case 'E':
{
t=14;
break;
}
case 'F':
{
t=15;
break;
}
}
sum+=t*pow(16,x);
x++;
}
cout<<sum<<endl;
return 0;
}