问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main() {
string s;
cin >> s;
long long int re = 0;
int n = s.size();
for(int i = 0; i < n; i++) {
int p;
switch(s[i]) {
case '0':p=0;break;
case '1':p=1;break;
case '2':p=2;break;
case '3':p=3;break;
case '4':p=4;break;
case '5':p=5;break;
case '6':p=6;break;
case '7':p=7;break;
case '8':p=8;break;
case '9':p=9;break;
case 'A':p=10;break;
case 'B':p=11;break;
case 'C':p=12;break;
case 'D':p=13;break;
case 'E':p=14;break;
case 'F':p=15;break;
default:break;
}
re = re + p * pow(16, n-1-i);
}
cout << re << endl;
return 0;
}