问题描述
从键盘输⼊⼀个不超过8位的正的⼗六进制数字符串,将它转换为正的⼗进制数后输出。
注:⼗六进制数中的10~15分别⽤⼤写的英⽂字⺟A、B、C、D、E、F表示。
样例输⼊
FFFF
样例输出
65535
很简单的按权展开求和即可
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
string s;
cin >> s;
int sum = 0;
int temp = 1;
for(int i = s.length() - 1; i >= 0; i--)
{
if(isalpha(s[i]))
{
sum += (s[i] - 'A' + 10) * temp;
}
else
{
sum += (s[i] - '0') * temp;
}
temp *= 16;
}
cout << sum;
return 0;
}