首页 >后端开发 >C++ >如何在 C 中高效地在十六进制字符串和标准字符串之间进行转换?

如何在 C 中高效地在十六进制字符串和标准字符串之间进行转换?

Patricia Arquette
Patricia Arquette原创
2024-12-15 22:23:13914浏览

How to Efficiently Convert Between Hexadecimal Strings and Standard Strings in C  ?

将十六进制字符串转换为 C 中的字符串

十六进制和标准文本格式之间的字符串转换需要 C 中的强大方法。这是详细指南:

将字符串转换为十六进制:

string_to_hex() 函数提供了一个简单的解决方案:

std::string string_to_hex(const std::string& input) {
    static const char hex_digits[] = "0123456789ABCDEF";
    std::string output;
    output.reserve(input.length() * 2);
    for (unsigned char c : input) {
        output.push_back(hex_digits[c >> 4]);
        output.push_back(hex_digits[c & 15]);
    }
    return output;
}

将十六进制转换为字符串:

对于从十六进制转换为字符串,hex_to_string() 函数可确保准确性:

std::string hex_to_string(const std::string& input) {
    const auto len = input.length();
    if (len & 1) throw std::invalid_argument("odd length");
    std::string output;
    output.reserve(len / 2);
    for (auto it = input.begin(); it != input.end(); ) {
        int hi = hex_value(*it++);
        int lo = hex_value(*it++);
        output.push_back(hi << 4 | lo);
    }
    return output;
}

用法示例:

为了演示功能:

std::string original_string = "Hello World";
std::string hex_string = string_to_hex(original_string);
std::cout << "Hexadecimal representation: " << hex_string << std::endl;
std::string recovered_string = hex_to_string(hex_string);
std::cout << "Recovered string: " << recovered_string << std::endl;

输出:

Hexadecimal representation: 48656c6c6f20576f726c64
Recovered string: Hello World

以上是如何在 C 中高效地在十六进制字符串和标准字符串之间进行转换?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn