Gzip deflate 非压缩数据格式

Gzip deflate noncompressed data format

阅读 RFC 1951 并手动编写了一个包含 non-compressed 数据的简单 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中提到的non-compressed数据块的deflate格式。 10 字节后 gzip header,

  1. 01: BFINAL=1BTYPE=00
  2. 8000: LEN=1
  3. 7fff: NLEN
  4. 86: a

后跟 CRC 和大小。

谁能指出 gzip 文件中的任何错误或缺失?非常感谢。

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