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