Gzip收缩非压缩数据格式

时间:2016-09-04 09:43:53

标签: gzip compression deflate

阅读RFC 1951并手动编写包含非压缩数据的简单gzip文件。未压缩的数据文件只有一个字符' a'没有额外的空格或换行符。 gzip文件的内容是
1f 8b 08 00 00 00 00 00 00 03 01 80 00 7f ff 86 43 be b7 e8 01 00 00 00

当我试图在Linux系统下解压缩它时,它给了我一个错误" gzip:xxx.gz:意外的文件结束"。

我想我遵循了3.2.4中提到的非压缩数据块的deflate格式。经过10个字节的gzip标头后,

  1. 01 BFINAL = 1 BTYPE = 00
  2. 8000 LEN = 1
  3. 7fff NLEN
  4. 86 a
  5. 其次是CRC和尺寸。

    任何人都可以指出gzip文件中有任何错误或遗漏的内容吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

8000的长度为128,而不是1. 0100的长度为1.(有趣的是,您设法正确地将最终未压缩长度表示为01 00 00 00。)

此外,a为十六进制61,而不是86

所以正确的流将是:

1f 8b 08 00 00 00 00 00 00 03 01 01 00 fe ff 61 43 be b7 e8 01 00 00 00