进制转换

本文介绍了一种将P进制数转换为Q进制数的方法,首先将P进制数转换为十进制数,然后将得到的十进制数转换为Q进制数。文章提供了一个具体的C++实现示例,可用于任意进制之间的转换。

基本思路:将P进制数转换为Q进制数,先将P进制数转换为十进制,再将十进制数转换为Q进制数.适用任意进制转换的代码如下:


#include<bits/stdc++.h>
using namespace std;
void toRand(char s[],char r[],int P,int Q)//P进制数转换为Q进制数 
{
	int sum=0,product=1;
	for(int i=strlen(s)-1;i>=0;i--)//P进制数转换为十进制数 
	{
		if(s[i]>='0'&&s[i]<='9')
		{
			sum+=(s[i]-'0')*product;
		}
		else if(s[i]>='A'&&s[i]<='Z')
		{
			sum+=(s[i]-'A'+10)*product;
		}
		else if(s[i]>='a'&&s[i]<='z')
		{
			sum+=(s[i]-'a'+10)*product;
		}
		product*=P;
	}
	
	//十进制转Q进制,除基取余法
	int num=0;//记录Q进制数的位数
	do{
		if(sum%Q>=0&&sum%Q<=9)
		{
			r[num++]=sum%Q;
		}
		else
		{
			r[num++]=char(sum%Q+55);
		}
		sum=sum/Q;
	}while(sum!=0); 
	 
	 	for(int i=num-1;i>=0;i--)//输出Q进制的方法,r数组中包括字母和数字 
	{
		if(r[i]>=0&&r[i]<=9)
		{
			printf("%d",r[i]);
		}
		else
		{
			printf("%c",r[i]);
		}
	}
}


int main()
{
	char s[100];//存储输入的进制数,storage 
	char r[100];//存储变成的进制数,result 
	int P,Q;
	scanf("%s%d%d",s,&P,&Q);
	toRand(s,r,P,Q);
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值