十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
这题简单,比十转十六简单一点,直接挨个按十六转十进制挨个乘起来求和结果可以得到最后的结果了。
#include <iostream>
#include<stack>
#include<string>
#include<math.h>
using namespace std;
int main()
{
string s; long long sum = 0;
int count, i;
while (cin >> s)
{
sum = 0;
count = s.length();
i = 0;
for (i = 0; i < s.size(); i++)
{
if (s[i] >= '0'&&s[i] <= '9')
sum += (s[i] - 48)*pow(16, count-i-1);
else
sum+=(s[i]-55)*pow(16, count-i-1);
}
cout << sum << endl;
}
return 0;
}
评测结果: