C语言 十六进制字符转换为字符串

我们知道,当在进行设备通信(eg:串口)的时候,通信数据都是16进制字符,如果需要记录日志,16进制字符是无法直接写入文本的(乱码),这是就需要将16进制字符转换为字符串


方法如下:

#include <stdio.h>

unsigned char  s_des[100] = {0};
int length  = 9;
unsigned char s_src[length]  =  {0xFE,0x01,0x52,0xFF,0xEF,0xBA,0x35,0x90,0xFA};


unsigned char IntToHexChar(unsigned char c)
{
if (c > 9)
return (c + 55);
else
return (c + 0x30);
}




int main()
{
unsigned char temp;
int i;
for (i=0; i<length; i++) 
{
temp = s_src[i]&0xf0;
s_des[2*i] = IntToHexChar(temp >> 4);
temp = s_src[i]&0x0f;
s_des[2*i+1] = IntToHexChar(temp);
}
printf("*** %s ***\n",s_des);
return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值