描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1 \le n \le 2^{31}-1 \1≤n≤231−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA
复制输出:
170
题解:
#include <iostream>
#include<string>
#include<cmath>
using namespace std;
int main() {
string s;
while(cin>>s)
{
int bit=0;
int res=0;
//从最后一个字符往前进行转换,0x(十六进制标识符)不包含在内
for(int i=s.size()-1;i>1;i--)
{
//该字符是数字0~9
if(s[i]>='0'&&s[i]<='9')
{
res+=(s[i]-'0')*pow(16,bit);
bit++;
}
//该字符是字母A~F
else
{
res+=(s[i]-'A'+10)*pow(16,bit);
bit++;
}
}
cout<<res<<endl;
}
}