是否有必要使用多个gzip成员输入大于4GB的?

时间:2015-03-06 02:29:12

标签: compression gzip deflate

stating

  

特点:

     
      
  • 没有4GB限制
  •   
     

...

     

Idzip只使用多个gzip成员没有文件大小限制。

the author of idzip似乎意味着需要多个gzip成员来支持数据> 4GB。

但是deflate algorithm,其输出gzip成员只包含页眉和页脚,evidently支持超过4GB的输入。

那么是否真的有必要使用多个gzip成员来压缩超过4GB的数据?

1 个答案:

答案 0 :(得分:1)

即使.net GZipStream,它不支持多个成员(与spec btw相反),但仍支持更多4GB的gzip文件,现在(since .net 4.0 )基础DeflateStream支持它。

这样会封住它:输入大于4GB时不需要多个gzip成员。

gzip specs不会限制大小:

  Each member has the following structure:

     +---+---+---+---+---+---+---+---+---+---+
     |ID1|ID2|CM |FLG|     MTIME     |XFL|OS | (more-->)
     +---+---+---+---+---+---+---+---+---+---+

... [omitting optional headers]

     +=======================+
     |...compressed blocks...| (more-->)
     +=======================+

       0   1   2   3   4   5   6   7
     +---+---+---+---+---+---+---+---+
     |     CRC32     |     ISIZE     |
     +---+---+---+---+---+---+---+---+

     ISIZE (Input SIZE)
        This contains the size of the original (uncompressed) input
        data modulo 2^32.

这里的重要部分是

  

原始(未压缩)输入数据的大小模2 ^ 32