阅读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标头后,
01
: BFINAL = 1 且 BTYPE = 00 8000
: LEN = 1 7fff
: NLEN 86
: a 其次是CRC和尺寸。
任何人都可以指出gzip文件中有任何错误或遗漏的内容吗?非常感谢。
答案 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