问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
注:sum的范围需要很大,故写成long long int
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int i, len, x, sum=0;
char str[10];
gets(str);
len=strlen(str);
for(i=0;i<len;i++){
if(str[i]=='A'){
x=10;
}
else if(str[i]=='B'){
x=11;
}
else if(str[i]=='C'){
x=12;
}
else if(str[i]=='D'){
x=13;
}
else if(str[i]=='E'){
x=14;
}
else if(str[i]=='F'){
x=15;
}
else{
x=str[i]-48;//因为0的ASCLL码为48
}
//cout<<x<<endl;
sum+=x*pow(16, len-i-1);
}
//cout<<len<<endl;
cout<<sum;
return 0;
}