基本思路:将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);
}
本文介绍了一种将P进制数转换为Q进制数的方法,首先将P进制数转换为十进制数,然后将得到的十进制数转换为Q进制数。文章提供了一个具体的C++实现示例,可用于任意进制之间的转换。
2万+

被折叠的 条评论
为什么被折叠?



