题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述
输入一个十六进制的数值字符串。
输出描述
输出该数值的十进制字符串。
示例
输入:0xA
输出:10
思路
本题编程时将题目简化为十六进制数转化为十进制数,但是这种情况不适用于大数,即转化后十进制数的长度超过 long long 型。
十六进制数利用 0x 进行标识,在转化前将这两个字符去除,同时十六进制由 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 组成,字母不区分大小写,逢16进1,即16进制数的第0位的权值为16的0次方,第1位的权值为 161,第2位的权值为162……。以此类推,第 N 位上数 X 表示大小为 X × 16N。
#include <iostream>
#include <string>
using namespace std;
int main(){
string input;
while(getline(cin,input)){
long long result=0;
input=input.substr(2);
for(int i=0;i<input.size();i++){
if(input[i]>='A' && input[i]<='F'){
result=result*16+(input[i]-'A'+10);
}
else if(input[i]>='a' && input[i]<='f'){
result=result*16+(input[i]-'a'+10);
}
else{
result=result*16+input[i]-'0';
}
}
cout<<result<<endl;
}
return 0;
}