當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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++?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。