微专题: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';
else
temp=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;
}
更多推荐


所有评论(0)