首頁 >後端開發 >C++ >如何在 C 中有效地將十六進位字串轉換為位元組數組?

如何在 C 中有效地將十六進位字串轉換為位元組數組?

Patricia Arquette
Patricia Arquette原創
2024-12-18 19:26:12510瀏覽

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