回答
0 1
+---+---+
|CMF|FLG|
+---+---+
CMF(壓縮方法和標誌) 這個字節被劃分成一個4位的壓縮方法和4- 位信息字段依賴於壓縮方法。
bits 0 to 3 CM Compression method
bits 4 to 7 CINFO Compression info
CM(壓縮方法) 此標識該文件中使用的壓縮方法。 CM = 8
表示窗口大小爲 至32K的「放氣」壓縮方法。這是gzip和PNG 以及其他幾乎所有的方法。 CM = 15被保留。
CINFO(壓縮信息) 對於CM = 8,CINFO是LZ77窗口 尺寸的基2對數,減去八(CINFO = 7指示32K窗口大小)。在此版本的 規範中,不允許CINFO值大於7的值爲 。 CINFO未在本說明書中對於 CM不等於8
在實踐中定義的,這意味着第一個字節是幾乎總是78
(十六進制)
FLG(標誌) 該標誌字節被劃分如下:
bits 0 to 4 FCHECK (check bits for CMF and FLG)
bit 5 FDICT (preset dictionary)
bits 6 to 7 FLEVEL (compression level)
的FCHECK值必須是使得CMF和FLG,作爲 觀看存儲在MSB順序(CMF * 256 + FLG)一個16位無符號整數時, 是31的倍數。
FLEVEL(壓縮級別) 這些標誌可供特定壓縮方法 使用。在 「放氣」 法(CM = 8
)設置這些標誌作爲 如下:
0 - compressor used fastest algorithm
1 - compressor used fast algorithm
2 - compressor used default algorithm
3 - compressor used maximum compression, slowest algorithm
以下是zlib壓縮數據格式。
+---+---+
|CMF|FLG| (2 bytes - Defines the compression mode - More details below)
+---+---+
+---+---+---+---+
| DICTID | (4 bytes. Present only when FLG.FDICT is set.) - Mostly not set
+---+---+---+---+
+=====================+
|...compressed data...| (variable size of data)
+=====================+
+---+---+---+---+
| ADLER32 | (4 bytes of checksum)
+---+---+---+---+
大多數情況下,FLG.FDICT
(字典標誌)未設置。在這種情況下,DICTID
根本不存在。所以,總聽到只是2個字節。
沒有字典的標題值(CMF
和FLG
)定義如下。
CMF | FLG
0x78 | 0x01 - No Compression/low
0x78 | 0x9C - Default Compression
0x78 | 0xDA - Best Compression
更多的ZLIB RFC
所有答案在這裏是最有可能是正確的,但是 - 如果你要直接操作zlib壓縮流,它是通過使用gz_open, gzwrite, gzclose
功能產生的 - 然後有額外的10個前導字節zlib壓縮蒸汽前頭部來 - 那些按功能gz_open生產 - 頭看起來是這樣的:
fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
,並導致以下十六進制轉儲:1F 8B 08 00 00 00 00 00 00 0B
,然後是zlib壓縮流。
,但也有8個字節後綴 - 他們是uLong
- CRC在整個文件,uLong
- 未壓縮文件大小 - 尋找在流結束後字節:
putLong (s->file, s->crc);
putLong (s->file, (uLong)(s->in & 0xffffffff));
ZLIB/GZIP頭
Level | ZLIB | GZIP
1 | 78 01 | 1F 8B
2 | 78 5E | 1F 8B
3 | 78 5E | 1F 8B
4 | 78 5E | 1F 8B
5 | 78 5E | 1F 8B
6 | 78 9C | 1F 8B
7 | 78 DA | 1F 8B
8 | 78 DA | 1F 8B
9 | 78 DA | 1F 8B
放氣沒有共同的標題
我看到你提出了兩個當前票數較高的答案的重大變化。這將大大改變答案。請不要提出這樣的編輯。相反,當你有足夠的聲望時,你應該發表評論。 – 2017-04-02 17:15:57
- 1. 什麼樣的標題簽名是0x7473657571655220?
- 2. 這是什麼樣的標記?
- 3. zlib:壓縮流總是一樣的嗎?
- 4. 錯誤的標題檢查zlib
- 5. 標題標籤的默認CSS樣式是什麼? (H1,h2,h3,h4,h5)
- 6. Perl中標題的含義是什麼?
- 7. 聲明瞭copy_from_user()的標題是什麼?
- 8. navigationItem的標題是什麼字體?
- 9. 什麼是UIBarButtonItem的可能標題?
- 10. 有什麼簡單的zlib教程?
- 11. 什麼樣的framewoks Spring是?
- 12. System.Drawing.Color類是什麼樣的?
- 13. 什麼樣的JavaScript是$ .getJSON()?
- 14. 頭盔是什麼樣的?
- 15. 這是什麼樣的HTML?
- 16. 什麼樣的壓縮是
- 17. 這是什麼樣的? - Java
- 18. 按標題查找窗口窗口的標題是什麼?
- 19. 爲什麼在zlib的壓縮功能是Windows和Linux
- 20. 此zlib字符串解壓縮有什麼問題?
- 21. C++ - Zlib - 標題和無標題支持。有多可靠?
- 22. 爲什麼Boost.ProgramOptions不是僅標題?
- 23. Boost:什麼是「便利標題」?
- 24. 什麼是<iosfwd>標題?
- 25. OSGi列表,這些標題是什麼?
- 26. H264 NAL標題是什麼意思?
- 27. 什麼是設計模式標題?
- 28. 「Accept-Language:en-securid」標題是什麼意思?
- 29. 標題標籤中的可接受標籤是什麼?
- 30. 什麼是iPod Touch應用程序開發的標題,以及「SBStatusBarDataManager;」的標題是什麼?
這是一個很好的答案:),幫助我在很多方面......嘿!不錯的頭像 – Ryan 2014-12-16 20:30:47