进过一段时间的研究,现在终于明白任意进制之间是如何转换的,现在就来给你分享。
解题思路:
比如说将一个n进制的数转换为m进制的数,这个过程需要一个过渡,就是现将一个n进制
的数转换为10进制,再将十进制数转换为m进制的数,任意进制转换为十进
制的思路就是按权展开,十进制转任意进制就是求余数,直到商数为零,然后逆向取余。
代码实现如下:
#include<stdio.h>
int main()
{
int i,j,k=0,num,sum=0,n,m,d;
char str[2000],str1[2000];
scanf("%s",str);
scanf("%d%d",&n,&m);
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='0'&&str[i]<='9')
num=str[i]-'0';
else
num=str[i]-'a'+10;
sum=sum*n+num;
}
while(sum)
{
d=sum%m;
str1[k++]="0123456789abcdef"[d];
sum/=m;
}
for(i=k-1;i>=0;i--)
{
if(str1[i]>='0'&&str1[i]<='9')
printf("%d",str1[i]-'0');
else
printf("%d",str1[i]-'a'+10);
}
return 0;
}