C/C++ 字符、字符串转十六进制(支持中文字符串转换)

流过昼夜 提交于 2019-12-04 03:35:51
#include <string>      // std::string
#include <sstream>     // std::stringstream
 
/**
 * #purpose    : 字符转十六进制
 * #note    : 不适用于汉字字符
 * #param ch    : 要转换成十六进制的字符
 * #return    : 接收转换后的字符串
 */
std::string chToHex(unsigned char ch)
{
    const std::string hex = "0123456789ABCDEF";
 
    std::stringstream ss;
    ss << hex[ch >> 4] << hex[ch & 0xf];
 
    return ss.str();
}
 
/**
 * #purpose    : 字符串转十六进制字符串
 * #note    : 可用于汉字字符串
 * #param str        : 要转换成十六进制的字符串
 * #param separator    : 十六进制字符串间的分隔符
 * #return    : 接收转换后的字符串
 */
std::string strToHex(std::string str, std::string separator = "")
{
    const std::string hex = "0123456789ABCDEF";
    std::stringstream ss;
 
    for (std::string::size_type i = 0; i < str.size(); ++i)
        ss << hex[(unsigned char)str[i] >> 4] << hex[(unsigned char)str[i] & 0xf] << separator;
    
    return ss.str();
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!