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

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

Patricia Arquette
发布: 2024-12-15 22:23:13
原创
910 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板