偶有兴致,想起敲几句代码,却手生了。哎,贵在坚持呀。
先在这里添代码,后面解释。
#include<stdio.h>
#include<stdlib.h>
#define LEN 32
/*
*将十进制数num转为base进制数,base允许范围为[2,62]
*/
void transter(int num,int base)
{
if (base<2 || base>62)
{
printf("参数非法!\n");
return ;
}
char result[LEN];
int beichushu,yushu;
beichushu=num;
int i=LEN-1;
while(beichushu!=0 && i>0)
{
yushu=beichushu%base;
beichushu=beichushu/base;
if(yushu>=0 && yushu<=9)
result[i--]=yushu+'0';
else if(yushu>=10 && yushu<=15)
result[i--]=yushu+'A'-10;
else if(yushu>=16 && yushu<=35)
result[i--]=yushu+'G'-16;
else if(yushu >=36 && yushu <=61)
result[i--]=yushu+'a'-36;
else
result[i--]=' ';
}
for(;i>=0;)
result[i--]=' ';
printf("%s\n",result);
}
int main()
{
int num=123456;
int base;
for(base=2;base<=62;base++)
{
printf("base=%d\tresult=",base);
transter(num,base);
}
return 0;
}
允许十进制数到base进制数的转换,其中base=[2,62]。当然可以扩充其他进制数。
十进制数及符号对应表:
十进制数 符号
0 01 1
…… ……
9 9
10 A
11 B
…… ……
15 F
16 G
17 H
…… ……
35 Z
36 a
37 b
…… ……
61 z