待转换的16进制字符串 “444F574E313233343520”
转换结果为:“DOWN12345 ”
void HexStrToStr(uint8_t *Buf, char *Str, uint16_t Len)
{
char Hex;
uint16_t i, N = 0;
if(Len % 2 != 0)return;
for(i = 0; i < Len ;)
{
if(Str[i] >= '0' && Str[i] <= '9')Hex = (Str[i] - 48) << 4;
else if(Str[i] >= 'A' && Str[i] <= 'F')Hex = (Str[i] - 55) << 4;
else if(Str[i] >= 'a' && Str[i] <= 'f')Hex = (Str[i] - 87) << 4;
i++;//防止死循环
if(Str[i] >= '0' && Str[i] <= '9')Hex += (Str[i] - 48);
else if(Str[i] >= 'A' && Str[i] <= 'F')Hex += (Str[i] - 55);
else if(Str[i] >= 'a' && Str[i] <= 'f')Hex += (Str[i] - 87);
i++;//防止死循环
Buf[N++] = Hex;
}
Buf[N] = 0;//结束符
}