进制转换

将P进制数X转换为十进制数y

1
2
3
4
5
6
7
int y=0,priduct=1;//1是P的0次方
while(x!=0)
{
y=y+(x%10)*product;//x%10是为了每次获取x的个位(此时输入为数值型。对于非数值型,一般用字符串作为输入,比如16进制数中的A到F,见下面的栗子)
x=x/10;//去掉x的个位
product=product*P;
}

一个完整的栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
//16进制转换为10进制
int main()
{
char s[10];
scanf("%s",s);
int sum=0,prod=1,t;
for(int i=strlen(s)-1;i>=0;--i)
{
if(s[i]>='0'&&s[i]<='9')
t=s[i]-'0';
if(s[i]>='a'&&s[i]<='z')
t=s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='Z')
t=s[i]-'A'+10;
sum=sum+t*prod;
prod=prod*16;
}
printf("%d",sum);
}

将十进制数y转换为Q进制数z

1
2
3
4
5
int z[40],num=0;//z[]存放Q的每一位,num为位数
do{
z[num++]=y%Q;
y=y/Q;
}while(y!=0)
凡希 wechat
喜欢所以热爱,坚持干货分享,欢迎订阅我的微信公众号
呐,请我吃辣条