十六進位字串轉換為位元組數組
將可變長度十六進位字串轉換為位元組數組是程式設計中的常見任務,可以實現表示人類可讀格式的二進位資料。以下是如何有效實現這一點:
要將像「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中文網其他相關文章!