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,理論可以縮小一半,實際作用於協議傳輸數據之間

 

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章