C++中ASCII码和HEX十六进制的相互转换

把ASCII字符转换成数值,

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();
}

与之相反,把16进制值转换成ASCII字符的函数如下,

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();
}

使用举例:

把一个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;
}

比如, char[2]={0xAB, 0xAC},

HexToAscii(char, 2)返回的就是字符串“0xAB 0xAC"。

 

 

原文链接: https://www.cnblogs.com/SpaceVision/p/14967060.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中ASCII码和HEX十六进制的相互转换

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/208932

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午11:38
下一篇 2023年2月12日 下午11:38

相关推荐