Conversion between ASCII code and HEX hexadecimal in C++

Convert ASCII characters into numeric values,

unsigned char ascii2value(unsigned char c)
{
    if ('0' <= c && c <= '9')
        return c - '0';
    else if ('a' <= c && c <= 'f')
        return c - 'a' + 10;
    else if ('A' <= c && c <= 'F')
        return c - 'A' + 10;
    else abort();
}

In contrast, the function to convert hexadecimal values ​​into ASCII characters is as follows,

unsigned char val2char(unsigned char c)
{
    if (0<=c && c<=9)
        return c + '0';
    else if (10 <= c && c <= 15)
        return c-10 + 'A';
    else abort();
}

Examples of use:

把一个HEX串0xXX 0xXX以字符的形式输出
std::string HexToAscii(char* inBuf, int numBytes) {
    int len = numBytes<<1;
    unsigned char cch = 0, lch=0, uch=0;
    std::string str;
    for (int i = 0; i < numBytes; i += 1)
    {
        cch = *inBuf++;
        uch = val2char((cch & 0xF0) >> 4);
        lch = val2char(cch & 0x0F);
        str.append("0x");
        str.push_back(uch);
        str.push_back(lch);
        str.append(" ");
    }
    return str;
}

For example, char[2]={0xAB, 0xAC},

What HexToAscii(char, 2) returns is the string "0xAB 0xAC".

 

 

Guess you like

Origin blog.csdn.net/tanmx219/article/details/114952396