问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100000+5;
long long cmp[maxn];
string str;
long long solve(int n)
{
int s=1;
for(int i=0;i<n;i++)
s*=16;
return s;
}
int main()
{
cin>>str;
reverse(str.begin(),str.end());
long long sum=0;
for(int i=0;i<str.length();i++)
{
if(str[i]>='0'&&str[i]<='9')
cmp[i]=str[i]-'0';
else
cmp[i]=str[i]-55;
sum+=(cmp[i]*solve(i));
}
cout<<sum<<endl;
return 0;
}
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100000+5;
long long cmp[maxn];
char str[maxn];
long long solve(int n)
{
int s=1;
for(int i=0;i<n;i++)
s*=16;
return s;
}
int main()
{
cin>>str;
int len=strlen(str);
long long sum=0;
for(int i=len-1;i>=0;i--)
{
if(str[i]>='0'&&str[i]<='9')
cmp[i]=str[i]-'0';
else
cmp[i]=str[i]-55;
sum+=(cmp[i]*solve(len-i-1));
}
cout<<sum<<endl;
return 0;
}