问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <iostream>
#include <string>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
string hex;
long long num; // 注意int最大值!
num=0;
cin>>hex;
int len = hex.length()-1;
for(int i=len;i>=0;i--){
long long zs = pow(16,len-i);
switch(hex[i]){
case 'F' : num+=15*zs;break;
case 'E' : num+=14*zs;break;
case 'D' : num+=13*zs;break;
case 'C' : num+=12*zs;break;
case 'B' : num+=11*zs;break;
case 'A' : num+=10*zs;break;
case '9' : num+=9*zs;break;
case '8' : num+=8*zs;break;
case '7' : num+=7*zs;break;
case '6' : num+=6*zs;break;
case '5' : num+=5*zs;break;
case '4' : num+=4*zs;break;
case '3' : num+=3*zs;break;
case '2' : num+=2*zs;break;
case '1' : num+=1*zs;break;
case '0' : num+=0*zs;break;
}
}
cout<<num;
return 0;
}