题目链接:http://lx.lanqiao.cn/problem.page?gpid=T50
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
这个需要注意转换后的十进制数的大小,这里需要用 long long型。
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
char s[10];
scanf("%s",s);
long long sum=0;
int l= strlen(s);
for(int i=0;i<l;i++){
if(s[i]<='F'&&s[i]>='A')
sum+=(s[i]-'A'+10)*pow(16.0,(l-i-1));
else
sum+=(s[i]-'0')*pow(16.0,(l-i-1));
}
printf("%lld\n",sum);
return 0;
}
进制转换只要知道各进制之间的转换方法就可以了
具体方法可以参考:https://blog.csdn.net/Krismile_/article/details/86817235