将int十进制转化为16进制字符串输出

	#include <stdio.h>
	int hex(int x,char *);
	int main()
	{
	   char a[9];
	   int n;
	   unsigned long int x;
	   scanf("%lu",&x);
	   n = hex(x, a);  //n为hex函数的返回值  是十六进制数的位数
	   a[n]=0;			//字符串结束
	   puts(a);
	}
	
	int hex(int x,char * a)
	{
	   char t[]="0123456789ABCDEF";
	   int n;
	   if(x<16)
	   {
	      a[0] = t[x];
	      return 1;					//递归结束
	   }
	   n = hex(x/16, a);           //当十进制数大于16,取下一位递归,递归结束后第n位为x%16的值 
	   a[n] = t[x%16];
	   return  n+1;					//为(n+1)位   
	}
发布了42 篇原创文章 · 获赞 13 · 访问量 1909

猜你喜欢

转载自blog.csdn.net/KEVINzzh/article/details/104867787
今日推荐