算法笔记-进制转换

进制转换题目

PAT A1019

十进制转其他进制

string tp(int y,int p) {
	int temp; //每次取模结果-即:转换后的当前位数字或字母 
	string s;
	do {
		temp = y%p; //取模 
		y/=p; //当前处理位已处理完,从y中删除 
		if(temp>=10) s+=temp-10+'A'; //若大于等于10,用字母 
		else s+=temp+'0';
	} while(y!=0);
	reverse(s.begin(),s.end());  //s中结果是从低位到高位,反转结果,使结果从高位到低位 
	return s;
}

其他进制转十进制

int pt(string x,int p) {
	int sum=0,index=0,t=0; // sum是最后的转换结果;index是权;t是当前位数字 
	for(int i=x.length()-1; i>=0; i--) { // 从低位到高位处理 
		t = isdigit(x[i])?x[i]-'0':x[i]-'A'+10; //取出当前位数字,若是字母转换为大于等于10的数字 
		sum += t*pow(p,index++); //累加和 记录当前位数字乘以基数的权次幂 
	}
	return sum;
}
posted @ 2020-07-18 12:08  JamieHou  阅读(169)  评论(0编辑  收藏  举报