C++字符串/十进制/十六进制转化

来源:互联网 发布:软件定制开发服务 编辑:程序博客网 时间:2024/06/05 15:44

ASCII字符串转16进制字符串(HEX字符串)

string pp = "whoami";string hex;for_each(pp.begin(), pp.end(), [&hex](char c){char val[3] = {0};sprintf(val, "%X", c); //小写则为%xhex.append(string(val));});
输出为77686F616D69
16进制字符串(Hex字符串)转ASCII字符串

int Char2Int(char c){if (c >= '0'&& c <= '9')return c - '0';else if (c >= 'A' && c <= 'F')return c - 'A' + 10;else if (c >= 'a' && c <= 'f')return c - 'a' + 10;return -1;}bool HexString2AscString(const string& in){if (in.length() & 1) return false;static string ptn = "0123456789ABCDEFabcdef";size_t found = in.find_first_not_of(ptn);if (found != in.npos)return false;string out;out.reserve(in.length() >> 1);for (size_t pos = 0; pos < in.length(); pos+=2)out.push_back((Char2Int(in[pos]) << 4) | Char2Int(in[pos+1]));cout<<out<<endl;return true;}



原创粉丝点击