c++ char转十六进制字符串

来源:赵克立博客 分类: C/C++ 标签:--发布时间:2017-09-25 17:05:03最后更新:2017-09-25 17:05:03浏览:4532
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2017-09-25 17:05:03
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
int HexCharToInt(char c)
{
        if (c >= '0' && c <= '9') return (c - '0');
        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
        return 0;
}

char* Hex2Bits(string s)
{
        int sz = s.length();
        char *ret = new char[sz/2];
        for (int i=0 ; i <sz ; i+=2) {
            ret[i/2] = (char) ((HexCharToInt(s.at(i)) << 4)
                                | HexCharToInt(s.at(i+1)));
        }
        return ret;
}

string Bits2Hex(char* bytes,int bytelength)
{
  string str("");
  string str2("0123456789ABCDEF");
   for (int i=0;i<bytelength;i++) {
     int b;
     b = 0x0f&(bytes[i]>>4);
     char s1 = str2.at(b);
     str.append(1,str2.at(b));
     b = 0x0f & bytes[i];
     str.append(1,str2.at(b));
     char s2 = str2.at(b);
   }
   return str;
}

int main()
{
        char s[3] ={'a','b','c'};
        std::string result;

        result = Bits2Hex(s,strlen(s));

        for(int i=0;i<3;i++)
        {
            printf("%02x", s[i]&0xFF);
        }

        printf("\n%s\n",result.data());

        system("pause");
}



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python