一、巧妙利用输入输出的限制
while(scanf("%x",&num)!=EOF)
{
printf("%d\n",num);
}
二、根据进制数的得到原则来编写代码
存在两种情况:
- 0~9之间:数值就是为该数乘以该位数所代表的权重
- A~F之间:数值就是为该数对应的(10,11,12,13,14,15)乘以该位数所代表的权重
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
string num;
while(cin>>num)
{
int a=0; //记录位数
int ans=0;
for(int i=num.length()-1;i>=0;i--){
if(num[i]>='0'&&num[i]<='9'){
ans = ans+ (num[i]-'0')*pow(16,a);
a++;
}
else if(num[i]>='A'&&num[i]<='F'){
ans = ans +(num[i]-'A'+10)*pow(16,a);
a++;
}
}
cout<<ans<<endl;
}
}