1、问题描述
(1) 2个char类型字符,转换为一个hex类型的字符,之间没有数值上的关联
例如: ab-->0xab,7a-->0x7a,仅仅是字符的组合
void char2hex(char *d,char *s,uint16_t count)
{
char h1,h2;
char s1,s2;
uint16_t i;
for (i=0; i<count; i++)
{
h1 = s[2*i];
h2 = s[2*i+1];
s1 = toupper(h1) - 0x30;
if (s1 > 9)
s1 -= 7;
s2 = toupper(h2) - 0x30;
if (s2 > 9)
s2 -= 7;
d[i] = (s1<<4) + s2;
}
}
toupper(h1) -->小写字母,转大写字母
(2)char 转 hex 之后,怎么转回来,如下
void hex2char(char *d,char *s,uint16_t count)
{
char ddl,ddh;
uint16_t i;
for (i=0; i<count; i++)
{
ddh = 48 + (s[i] >> 4);
ddl = 48 + (s[i] % 16);
if (ddh > 57) ddh = ddh + 7;
if (ddl > 57) ddl = ddl + 7;
d[i*2] = ddh;
d[i*2+1] = ddl;
}
d[count*2] = '\0';
}
//如上不管是char转hex还是hex转char,最大的意义在于改变大小,char转hex,理论可以缩小一半,实际作用于协议传输数据之间