进制转换——10进制->任意(36以内)进制
把给定10进制正整数转换成任意进制,并以字符串形式输出。
核心算法:对进制取余,丢弃最低位,循环
#include <stdio.h>
#include <math.h>
#include <string.h>
//10进制转任意小于10的进制
void DecToArbitrary(char *str,int n,int radix)
{
int num=0;
int i=0;
while(n!=0)
{
num+=(n%radix)*(int)pow(10.0,i);
n/=radix;
++i;
}
sprintf(str,"%d",num);
}
void StrReverse(char *str)
{
char tmp;
int len=strlen(str);
for(int i=0,j=len-1; i<=j; i++,j--)
{
tmp = str[i];
str[i] = str[j];
str[j]= tmp;
}
str[len]='\0';
}
//十进制转任意进制(小于等于36)
void DecToArbitrary2(char *str,int n,int radix)
{
int i=0;
char ch[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
while(n!=0)
{
str[i++]=ch[(n%radix)];
n/=radix;
}
StrReverse(str);
}
int main()
{
char str[100]="";
DecToArbitrary2(str,16,16);
printf("%s\n",str);
return 0;
}