將十六進位字串轉換為位元組數組
要將像「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* HexToBytes(const std::string& hex, int& length) { length = hex.length() / 2; char* bytes = new char[length]; for (unsigned int i = 0; i < hex.length(); i += 2) { std::string byteString = hex.substr(i, 2); bytes[i / 2] = (char) strtol(byteString.c_str(), NULL, 16); } return bytes; }
在這種情況下,該函數採用十六進位字串和一個整數引用,該引用將儲存位元組數組的結果長度。它為位元組數組動態分配內存,並以與基於向量的解決方案類似的方式填充它。
這兩種方法都會產生一個位元組數組,該數組可以寫入檔案並正確解釋為所表示的二進位資料由原始的十六進位字串。
以上是如何在 C 中將十六進位字串轉換為位元組數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!