原题地址:十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
解:
1.按位乘以对应的权值,并相加。
2.一个字符一个字符获取,可用string,也方便像数组一样使用下标。(length是获取string位数)
3.用ASCII码区分为两部分,分开减。
注:下标和16的次方不相同
代码:
#include"iostream"
#include"string"
#include"cmath"
using namespace std;
int main()
{
string s;
long long a=0;//初始化
getline(cin,s);
for(int i=(s.length()-1),j=0;i>=0;j++,i--)
{
if(int(s[i])>=65) //字母时
a+=(int(s[i])-55)*pow(16.0,j);
else//1-9时
a+=(int(s[i])-48)*pow(16.0,j);
}
cout<<a;
return 0;
}