将一个无符号整形数,转化为十六进制输出。
1、方法一,直接输出
void To_Hex1(unsigned long int value)
{
unsigned int i=(sizeof(unsigned long int)*2);
unsigned int temp;
while(i--)
{
temp = (value&(0xf<<(4*i)))>>(4*i);
if(temp>9)
printf("%c",'A'+temp-10);
else
printf("%c",'0'+temp);
}
}
这种方法无疑是比较笨的一种,可以考虑通过递归的方式去实现。
void To_Hex2(unsigned long int value)
{
unsigned int temp;
if(value >=16)
{
To_Hex2(value/16);
}
temp = value%16;
if(temp>9)
printf("%c",'A'+temp-10);
else
printf("%c",'0'+temp);
}
接下来,可以考虑C标准库中的实现。有时间分析。