C語言char數組轉換十六進制數組

/**
*
*Function name : StringToHex
*Description     : Ascii字符數組轉十六進制數組
*Parameter       : str需要轉化的字符串,strHex接收16進制數組容器
*Return              : NULL
*
**/
void StringToHex(char *str, unsigned char *strHex)
{
uint8_t i,cnt = 0;
char *p = str;//指針p初始化爲指向str
uint8_t len = strlen(str);//獲取字符串中的字符個數
while(*p != '\0'){//結束判斷
    for(i = 0; i < len; i++){//循環判斷當前字符是數字還是小寫字符還是大寫字符
        if((*p >= '0') && (*p <= '9'))//當前字符爲數字0~9時
            strHex[cnt] = *p - '0' + 0x30;
        if((*p >= 'A')&&(*p <= 'Z'))//當前字符爲大寫字母A~Z時
            strHex[cnt] = *p - 'A' +0x41;
        if((*p >= 'a')&&(*p <= 'z'))//當前字符爲小寫字母a~z時
            strHex[cnt] = *p - 'a' +0x61;
        
        p++;
        cnt++;
    }
  }
}

使用

unsigned char strHex[20] = {0};
char *str = "EC200UCNAAR01A05M08";
StringToHex(str,strHex); 
for(int cnt = 0; cnt < 20; cnt ++)
{
    debug("cHexText === %x\r\n",strHex[cnt]);
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章