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

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

Linda Hamilton
Linda Hamilton原創
2024-12-19 11:03:33889瀏覽

How to Convert Hex Strings to Byte Arrays in C  ?

將十六進位字串轉換為位元組數組

處理二進位資料時,通常需要將十六進位字串轉換為位元組數組。十六進位字串表示十六進位格式的原始二進位資料。以下是如何使用可變長度十六進位字串在 C 中完成此轉換。

要將十六進位字串「01A1」轉換為位元組數組,我們將使用以下方法:

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* 或 std::vector 類型的變數中。根據您的具體應用的要求。透過將位元組陣列寫入檔案並使用 hexdump -C 命令,您可以驗證資料是否對應於原始的十六進位字串。

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

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