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]);
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章