我有一個關於使用zlib庫壓縮數據的問題。 我想設置zlib(即deflateInit函數),使壓縮數據的二進制等於命令生成的數據:gzip -9。這可能嗎? 預先感謝您設置zlib生成壓縮數據
3
A
回答
2
您無法獲得與gzip完全相同的輸出。但是,您可以獲得與gzip兼容的輸出,以便gzip可以對其進行解壓縮。您需要使用deflateInit2()
。
6
windowsBits參數的默認值是15。
添加16這將是31
15 | 16個返回31
z_stream strm;
unsigned char* in = DATA TO COMPRESS;
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
strm.next_in = in;
int windowsBits = 15;
int GZIP_ENCODING = 16;
deflateInit2 (&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED,
windowBits | GZIP_ENCODING,
8,
Z_DEFAULT_STRATEGY));
相關問題
- 1. 解壓縮Zlib
- 2. ZLIB解壓縮
- 3. ZLIB壓縮
- 4. zlib壓縮的最小數據大小?
- 5. 用c#打開Delphi ZLib壓縮數據#
- 6. 數據壓縮庫:brotli vs zlib
- 7. 放氣數據解壓縮zlib
- 8. 使用Zlib將數據壓縮爲塊
- 9. 的Python zlib的解壓縮gzip壓縮數據
- 10. 使用zlib壓縮計算壓縮數據大小
- 11. zlib,如何解壓縮壓縮數據塊的流?
- 12. zlib壓縮和解壓
- 13. zlib壓縮錯誤
- 14. ASIHTTPRequest的zlib壓縮
- 15. zlib/libz.dylib解壓縮
- 16. Zlib解壓縮C++
- 17. 的zlib壓縮/解壓縮Linux編程
- 18. 在Nodejs中使用zlib壓縮和解壓數據
- 19. 使用zlib解壓縮PNG
- 20. 通過PHP Zlib壓縮
- 21. 壓縮不zlib庫工作
- 22. 的Node.js - zlib壓縮(RFC 1950)
- 23. Zlib兼容壓縮流?
- 24. Zlib壓縮放大文件
- 25. 解壓縮zlib編碼nsdata
- 26. DCPCrypt(DELPHI)+了ZLib /「數據錯誤」解壓縮解密的數據
- 27. 複雜:解壓縮數據包中的數據時出錯zlib
- 28. C(ZLIB)壓縮數組的解壓縮返回亂碼
- 29. C++的zlib壓縮字節數組
- 30. zlib數據不解壓
我有同樣的問題掙扎。我發現了zlib FAQ(顯然是你寫的),它解釋了相同的解決方案 - 使用deflateInit2()。但是,基於deflateInit2的大量文檔,對於我如何要求zlib生成gzip兼容數據仍然不是很明顯。 '策略'似乎是最有可能調整的參數。你能澄清嗎?我也嘗試僞造一個gzip頁眉和頁腳,但我無法欺騙'gunzip'。 –
該文檔位於zlib.h中。你在讀那個嗎?這裏都是純英文的。它在'deflateInit2'下面說:_「對於可選的gzip編碼,windowBits也可以大於15,在windowBits中添加16來寫一個簡單的gzip頭文件和尾部壓縮數據而不是zlib wrapper。」_ –
好的,我看到了那現在。因此,如果我正在閱讀該更正,windowBits應該在8-15之間,如果要用gzip包裝,則會添加16。我試着用15 + 16的windowBits調用deflateInit2(),但它返回一個流錯誤(-2)。請注意,該程序使用deflateInit()/ deflate()正確生成zlib數據。 –