C语言将int型数据转换为十六进制的字符串
来源:绿叶清风
方法一:
int i =0;
char * inttohex(int aa,char *buffer)
{
if (aa < 16) //递归结束条件
{
if (aa < 10) //当前数转换成字符放入字符串
buffer[i] = aa + '0';
else
buffer[i] = aa - 10 + 'a';
buffer[i+1] = '\0'; //字符串结束标志
}
else
{
inttohex(aa / 16,buffer); //递归调用
i++; //字符串索引+1
aa %= 16; //计算当前值
if (aa < 10) //当前数转换成字符放入字符串
buffer[i] = aa + '0';
else
buffer[i] = aa - 10 + 'a';
}
return (buffer);
}
由于使用了全局变量i来记录下标,每次在调用函数转换前都需要将将i设置成0;
方法二,使用静态变量:
char * inttohex(int aa,char *buffer)
{
static int i = 0;
i = 0;
if (aa < 16) //递归结束条件
{
if (aa < 10) //当前数转换成字符放入字符串
buffer[i] = aa + '0';
else
buffer[i] = aa - 10 + 'a';
buffer[i+1] = '\0'; //字符串结束标志
}
else
{
inttohex(aa / 16,buffer); //递归调用
i++; //字符串索引+1
aa %= 16; //计算当前值
if (aa < 10) //当前数转换成字符放入字符串
buffer[i] = aa + '0';
else
buffer[i] = aa - 10 + 'a';
}
return (buffer);
}
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询