/**
*
*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]);
}