当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Hex String转Byte Array用法及代码示例


十六进制字符串是以下的组合数字 0-9字符A-F字节数组是用于存储的数组字节仅数据类型。字节数组的每个元素的默认值为 0。在本文中,我们将学习如何将十六进制字符串转换为字节数组。

例子:

Input:
Hex String : "2f4a33"

Output: Byte Array : 47 74 51

Explanation: 
Hex String: "2f"
Therefore, "2f" is converted to 47.
(2*161) + (15*160) ) = 32 + 15 = 47
For "4a":
 (4 * 161  + 10 * 160) = 74
For "33":
(3 * 161 + 3 * 160) = 51
Therefore the output is: 47 74 51

在 C++ 中将十六进制字符串转换为字节数组

我们可以通过解析十六进制字符串并将每对十六进制字符转换为其对应的字节值,将十六进制字符串转换为 C++ 中的字节数组。

方法

  • 将十六进制字符串分解为十六进制字符对。
  • 找出每个字符对的十进制值。
  • 从十六进制字符串十进制值创建字节数组。

将十六进制字符串转换为字节数组的 C++ 程序

下面的程序演示了如何在 C++ 中将十六进制字符串转换为字节数组。

C++


// C++ Program to illustrate how to covert a hex string to a 
// byte array 
#include <iostream> 
#include <string> 
#include <vector> 
using namespace std; 
  
// Function to convert a hex string to a byte array 
vector<uint8_t> 
hexStringToByteArray(const string& hexString) 
{ 
    vector<uint8_t> byteArray; 
  
    // Loop through the hex string, two characters at a time 
    for (size_t i = 0; i < hexString.length(); i += 2) { 
        // Extract two characters representing a byte 
        string byteString = hexString.substr(i, 2); 
  
        // Convert the byte string to a uint8_t value 
        uint8_t byteValue = static_cast<uint8_t>( 
            stoi(byteString, nullptr, 16)); 
  
        // Add the byte to the byte array 
        byteArray.push_back(byteValue); 
    } 
  
    return byteArray; 
} 
  
int main() 
{ 
    string hexString1 = "2f4a33"; 
    vector<uint8_t> byteArray1 
        = hexStringToByteArray(hexString1); 
  
    // Print the input and output 
    cout << "Input Hex String: " << hexString1 << endl; 
    cout << "Output Byte Array: "; 
    for (uint8_t byte : byteArray1) { 
        cout << static_cast<int>(byte) << " "; 
    } 
  
    return 0; 
}
输出
Input Hex String: 2f4a33
Output Byte Array: 47 74 51 

时间复杂度:O(N),这里N是十六进制字符串的长度。
辅助空间:O(N)



相关用法


注:本文由纯净天空筛选整理自rajpootveerendrasingh36大神的英文原创作品 How to Convert Hex String to Byte Array in C++?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。