首页 >后端开发 >C++ >如何在 C 中有效地将十六进制字符串转换为字节数组?

如何在 C 中有效地将十六进制字符串转换为字节数组?

Patricia Arquette
Patricia Arquette原创
2024-12-18 19:26:12485浏览

How to Efficiently Convert a Hex String to a Byte Array in C  ?

十六进制字符串转换为字节数组

将可变长度十六进制字符串转换为字节数组是编程中的常见任务,可以实现表示人类可读格式的二进制数据。以下是如何有效实现这一点:

要将像“01A1”这样的十六进制字符串转换为字节数组,我们可以利用内置的 strtol() 函数来执行转换。以下实现创建一个字符的 std::vector 来存储字节数组:

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  // Loop through the hex string in pairs of characters
  for (unsigned int i = 0; i < hex.length(); i += 2) {
    // Extract the current pair of characters
    std::string byteString = hex.substr(i, 2);

    // Convert the pair to a char using strtol()
    char byte = (char)strtol(byteString.c_str(), NULL, 16);

    // Append the char to the byte array
    bytes.push_back(byte);
  }

  // Return the byte array
  return bytes;
}

此方法适用于任何偶数长度的十六进制字符串。 strtol() 函数接受一个指向字符数组 byteString.c_str() 和基数(16 表示十六进制)的指针。

通过使用这个 HexToBytes() 函数,您可以轻松地将十六进制字符串转换为字节数组,让您可以方便灵活地处理二进制数据。

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

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