To my CSDN

进制转换——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;
}

 

posted @ 2019-05-26 15:47  我叫RT  阅读(222)  评论(0编辑  收藏  举报