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

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

Susan Sarandon
Susan Sarandon原創
2024-12-24 11:50:14547瀏覽

How to Convert a Hexadecimal String to a Byte Array in C  ?

十六進位字串到位元組數組的轉換

在程式設計場景中,經常需要對十六進位字串進行轉換,十六進位字串以緊湊的形式表示二進位資料格式,轉換為位元組數組。位元組數組更適合直接資料操作和儲存。

這種轉換的一種有效方法是利用標準 strtol() 函數。此函數將一串數字解釋為指定基數的整數,使我們能夠提取十六進位字元的整數表示形式。

這是 C 中的實作:

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

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    char byte = (char) strtol(byteString.c_str(), NULL, 16);
    bytes.push_back(byte);
  }

  return bytes;
}

此函數使用用於迭代檢查字元對中的十六進位字串的循環。對於每一對,它建立一個表示單一十六進位位元組的子字串,並使用 strtol() 將其轉換為 char,為十六進位解釋提供基數 16。然後將產生的 char 附加到位元組向量。

透過使用此函數,您可以輕鬆地將十六進位字串轉換為位元組數組,從而實現二進位資料的高效處理和儲存。

以上是如何在 C 中將十六進位字串轉換為位元組數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn