微专题:C++中的进制转换
数学原理
例如:十六进制转十进制
(111)16=(1+16+256)10=(273)10
或者:1*16+1=17
17*16+1=273
故可以使用字符数组,从左到右,用temp保存最新一位的数字(转换),
result=result*16+temp;
#include<iostream>
using namespace std;
void filter(char original[],char target[]){int i=0,j=0;while(original[i]){if(original[i]>='0'&&original[i]<='9'||original[i]>='a'&&original[i]<='f'||original[i]>='A'&&original[i]<='F'){target[j]=original[i];j++;i++;}}
}
int charToDecimal(char *target){int i=0,j=0,result=0,temp=0;while(target[i]){if(target[i]>='0'&&target[i]<='9')temp=target[i]-'0';elsetemp=target[i]-'A'+10;result=result*16+temp;i++;}return result;
}
int main(){char data[20];char target[20];cin.getline(data,19);int dec;filter(data,target);cout<<"过滤后:"<<target;dec=charToDecimal(target);cout<<data<<"对应十进制数:"<<dec<<endl;return 0;
}