簡體   English   中英

使用zlib庫進行gzip解壓縮

[英]gzip decompression using zlib library

我在解壓縮某些gzip數據時遇到問題。 我有一個帶有指向動態分配的char字符串的指針的數組。 該數組的每個元素都是我要解壓縮的gzip文件的一部分。 我想到的第一件事是將這些字符串連接為一個,然后解壓縮數據,但是由於要進行大量復制,因此我想避免使用此方法。

所以問題是:有沒有辦法使用zlib庫解壓縮分成幾部分的數據? 我試圖這樣做,但是當我解壓縮第一部分時,我得到Z_DATA_ERROR-這是正常的,因為數據不完整。 有什么方法可以“等待”其余數據解壓縮嗎?

是。 您可以簡單地以適當的順序對每個字符串依次調用inflate() 對於inflate()每次調用,您可以為壓縮數據提供不同的指針和長度。 每次確保在移至下一個輸入塊之前,先消耗掉所有生成的未壓縮數據,並且avail_in為零。

如果收到Z_DATA_ERROR ,則意味着您沒有正確地重新組裝原始流,或者原始流不是gzip流。

請注意,要解壓縮gzip流,您需要使用inflateInit2()進行初始化,並適當地設置參數以請求gzip解壓縮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM