char to hex

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,理论可以缩小一半,实际作用于协议传输数据之间

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值