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,
01
: BFINAL=1 和 BTYPE=00
8000
: LEN=1
7fff
: NLEN
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
阅读 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,
01
: BFINAL=1 和 BTYPE=008000
: LEN=17fff
: NLEN86
: 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