例如将0xAB进行转化:
#include <stdio.h>
#include <stdlib.h>
int bit_num(int n); //计算十进制数字的位数
char* hextodec(unsigned char s); //十六进制转10进制
int main()
{
char *value = NULL;
unsigned char num = 0xAB;
value = hextodec(num);
printf("value is %s\n",value);
free(value);
return 0;
}
char* hextodec(unsigned char s)
{
int count = 0;
char *str = NULL;
s=((s&0xf0)>>4)*16+(s&0x0f);
count = bit_num(s);
str = calloc(count,sizeof(char));
if(str == NULL)
{
printf("Can’t get memory!\n");
}
sprintf(str,"%d",s);
return str;
}
int bit_num(int n)
{
int count = 0;
do
{
n = n / 10;
count++;
} while (n > 0);
return count;
}
结果如下:
value is 171