十进制转十六进制
- 使用
sprintf
函数
void int_to_hex(int a,char *buf)
{
sprintf(buf,"%x",a);
}
- 使用递归实现
void int_to_hex(int a,char *buf)
{
static int i = 0;
if (a < 16)
{
if(a < 10)
{
buf[i] = a + '0';
}
else
buf[i] = a - 10 + 'a';
buf[i+1] = '\0';
}
else
{
int_to_hex(a/16,buf);
i++;
a %= 16;
if(a < 10)
buf[i] = a + '0';
else
buf[i] = a - 10 + 'a';
}
}
十六进制转十进制
int hex_to_int(char *buf)
{
int i,t,sum = 0;
for(i = 0;buf[i];i++)
{
if(buf[i] < '0' || buf[i] > 'f')
{
printf("十六进制数错误!\n");
exit(0) ;
}
if(buf[i] <= '9' && buf[i] >= '0')
t = buf[i] - '0';
else
t = buf[i] - 'a' + 10;
sum = sum*16 + t;
}
return sum;
}
相加代码
int fun(char *a,char *b)
{
int m,n;
m = hex_to_int(a);
n = hex_to_int(b);
int t = m + n;
int_to_hex(t,a);
return 0;
}