首页 >后端开发 >C++ >如何在 C 中将字符串转换为十六进制并返回?

如何在 C 中将字符串转换为十六进制并返回?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-19 11:25:09232浏览

How to Convert Strings to Hexadecimal and Back in C  ?

在 C 语言中将字符串转换为十六进制并返回

操作字符串和十六进制数字是编程中的常见任务。在 C 中,标准库为这些操作提供了一组函数。

字符串到十六进制 (string_to_hex)

使用 string_to_hex 函数将字符串转换为十六进制。该函数迭代输入字符串中的每个字符,提取其十六进制值,并将其附加到输出字符串。例如,字符串“Hello World”将转换为“48656C6C6F20576F726C64”。

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)

将十六进制字符串转换回来对于常规字符串,请使用 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;
}

这使您可以轻松地在 C 中的字符串和十六进制数据之间进行转换,使其成为方便各种编程场景。

以上是如何在 C 中将字符串转换为十六进制并返回?的详细内容。更多信息请关注PHP中文网其他相关文章!

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