字符串转成十六进制本质上是二进制转成十六进制
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制
例如字符‘0’的ASCALL码为48
二进制表示为 0011 0000 (4位一段,位数不足高位补0)
转成十六进制就是 3 0
因此字符串转十六进制就是取二进制的高四位和低四位分别转换,代码如下:
string binaryToHex(const string& binaryStr)
{
string ret;
static const char *hex = "0123456789ABCDEF";
for (auto c:binaryStr)
{
ret.push_back(hex[(c >> 4) & 0xf]); //取二进制高四位
ret.push_back(hex[c & 0xf]); //取二进制低四位
}
return ret;
}
int main()
{
std::cout<<binaryToHex("0").c_str()<<std::endl;
getchar();
return 0;
}
结果: