首页 >后端开发 >C++ >如何在 C 语言中进行字符串和十六进制之间的转换?

如何在 C 语言中进行字符串和十六进制之间的转换?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 12:11:14686浏览

How to Convert Between Strings and Hexadecimal in C  ?

字符串和十六进制之间的 C 转换

在 C 中,可以有效地操作和转换数据类型。这包括字符串和十六进制格式之间的转换。

将字符串转换为十六进制

要将字符串转换为其十六进制表示形式,常见的方法是使用十六进制数字的字符数组。下面是一个示例:

#include <string>

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 函数:

#include <stdexcept>

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;
}

该函数验证输入字符串是否具有偶数长度(假设每个数字的有效性)并使用 hex_value 辅助函数来解释各个十六进制数字。

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

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