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


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM