当前位置:首页 C++ > 正文

c++字符串转16进制

作者:野牛程序员:2023-08-07 15:20:19 C++阅读 3137

在C++中,要将字符串转换为16进制表示,你可以将每个字符转换为对应的16进制值并拼接在一起。C++标准库中没有直接的函数来实现这一转换,但你可以使用以下方法来完成:

  1. 使用std::stringstreamstd::stringstream是C++标准库中的一个类,可以方便地处理字符串流。你可以使用std::stringstream将每个字符转换为16进制,并将结果拼接成一个新的字符串。

    #include <iostream>
    #include <iomanip>
    #include <sstream>
    
    std::string stringToHex(const std::string& input) {
        std::stringstream ss;
        ss << std::hex << std::uppercase << std::setfill('0');
        for (char c : input) {
            ss << std::setw(2) << static_cast<int>(static_cast<unsigned char>(c));
        }
        return ss.str();
    }
    
    int main() {
        std::string inputString = "Hello, World!";
        std::string hexString = stringToHex(inputString);
        std::cout << "Hex representation: " << hexString << std::endl;
        return 0;
    }

    在上面的例子中,stringToHex函数将输入的字符串转换为16进制表示。std::stringstream对象ss用于构建新的16进制字符串。std::hex表示输出为16进制格式,std::uppercase用于输出大写字母表示,std::setfill('0')用于在输出不足两位时填充零,std::setw(2)表示输出宽度为2个字符。

  2. 使用C++17的std::string_viewstd::format: 在C++17中,你还可以使用std::string_viewstd::format来进行字符串转换。

    #include <iostream>
    #include <format>
    
    std::string stringToHex(const std::string& input) {
        std::string hexString;
        for (char c : input) {
            hexString += std::format("{:02X}", static_cast<unsigned char>(c));
        }
        return hexString;
    }
    
    int main() {
        std::string inputString = "Hello, World!";
        std::string hexString = stringToHex(inputString);
        std::cout << "Hex representation: " << hexString << std::endl;
        return 0;
    }

在这两种方法中,inputString表示要转换的原始字符串,hexString表示转换后的16进制表示字符串。输出结果将是输入字符串的每个字符的16进制表示,例如48656C6C6F2C20576F726C6421

请注意,上述示例中的代码都可以处理包含空格、特殊字符和控制字符等任意字符的输入字符串。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击