在程序中进行进制转换通常采用模拟的方式进行,以下给出两个简单的例子:
十进制转 n 进制
以下给出一个例子,最终结果以字符串形式存储。
整个过程实际上是在模拟短除法。
int num,cnt=0; char a[100]; int n; scanf("%d",&n); scanf("%d",&num); while(num) { a[cnt++]=num%n+'0'; num/=3; } a[cnt]='\0'; printf("%s",a);
n进制转十进制
过程实现本质仍然是按权展开相加。
char b[100]; int n; scanf("%s",b); scanf("%d",&n); int len=strlen(b); int num,w=1; for(int i=len-1;i>=0;i--) { num+=(b[i]-'0')*w;//这里b是一个字符串存储的二进制数 w*=n; }
其中的“w*=n”实际上是通过循环实现每一位权重的增加的,即 位数每高一位,底数的指数+1.