1.將hex字符串轉(zhuǎn)換成hex數(shù)組
uint8_t StringToHex(char *str, unsigned char *out, unsigned int *outlen)
{
char *p = str;
char high = 0, low = 0;
uint8_t tmplen = strlen(p), cnt = 0;
tmplen = strlen(p);
while(cnt < (tmplen / 2))
{
high = ((*p > '9') && ((*p <= 'F') || (*p <= 'f'))) ? *p - 48 - 7 : *p - 48;
low = (*(++ p) > '9' && ((*p <= 'F') || (*p <= 'f'))) ? *(p) - 48 - 7 : *(p) - 48;
out[cnt] = ((high & 0x0f) << 4 | (low & 0x0f));
p ++;
cnt ++;
}
if(tmplen % 2 != 0) out[cnt] = ((*p > '9') && ((*p <= 'F') || (*p <= 'f'))) ? *p - 48 - 7 : *p - 48;
if(outlen != NULL) *outlen = tmplen / 2 + tmplen % 2;
return tmplen / 2 + tmplen % 2;
}
使用方式:
uint8_t *sendMsg;
uint8_t recv_len = 0;
char * bodyUploadInfoString = "03CC0503CC0503CC0503CC0503CC05";
sendMsg = malloc(sizeof(bodyUploadInfoString)/2);
StringToHex(bodyUploadInfoString, sendMsg, &recv_len);
2.十六進制與ACSII碼互轉(zhuǎn)
把ASCII字符轉(zhuǎn)換為16進制
//功能描述:把ASCII字符轉(zhuǎn)換為16進制
uint8_t CharToHex(uint8_t bHex)
{
if((bHex>=0)&&(bHex<=9))
{
bHex += 0x30;
}
else if((bHex>=10)&&(bHex<=15))//Capital
{
bHex += 0x37;
}
else
{
bHex = 0xff;
}
return bHex;
}
把16進制轉(zhuǎn)換為ASCII字符
//功能描述:把16進制轉(zhuǎn)換為ASCII字符
uint8_t HexToChar(uint8_t bChar)
{
if((bChar>=0x30)&&(bChar<=0x39))
{
bChar -= 0x30;
}
else if((bChar>=0x41)&&(bChar<=0x46)) // Capital
{
bChar -= 0x37;
}
else if((bChar>=0x61)&&(bChar<=0x66)) //littlecase
{
bChar -= 0x57;
}
else
{
bChar = 0xff;
}
return bChar;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者