数学原理

例如:十六进制转十进制

(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;
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐