16进制算法

场景:10进制转换为16进制算法解决办法

10进制转换为16进制算法
请有能力的给个算法,谢谢!

------解决方案--------------------

#include <stdio.h>
char * itohs(unsigned int,char *);

int main(void)
{
char bin_str[2*sizeof(unsigned int)+1],*result;
unsigned int number;

while(scanf( "%u ",&number)==1)
{
result=itohs(number,bin_str);
printf( "%u is %s\n ",number,result);
}
return 0;
}

char * itohs(unsigned int n,char * ps)
{
int i,k;
int size=2*sizeof(unsigned int);

ps[size]= '\0 ';

for (i=size-1;i> =0;i--)
{
k=n%16;
n/=16;

if (k <10)
ps[i]= '0 '+k;
else
ps[i]= 'A '+(k-10);
}
return ps;
}