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