题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子:
0xA
输出例子:
10
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int i,sum;
char str[20];
while(cin >> str){
i = 2; //这里是关键,注意十六进制前面2位是符号忽略
sum = 0;
while(str[i] != '\0'){
int temp = 0;
if(str[i] >= '0' && str[i] <= '9'){
temp = str[i] - 48; //转换成数字
}
else if(str[i] >= 'A' && str[i] <= 'F'){
temp = str[i] - 55;
}
else if(str[i] >= 'a' && str[i] <= 'f'){
temp = str[i] - 87;
}
sum = sum * 16 + temp; //主要按照公式转换
i++;
}
cout << sum << endl;
}
return 0;
}