当前位置: 代码迷 >> 综合 >> 16进制字符串转字符串
  详细解决方案

16进制字符串转字符串

热度:65   发布时间:2024-03-08 09:52:59.0

待转换的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;//结束符

}

  相关解决方案