Compression 用于使用固定哈夫曼码对压缩数据进行放气的解压缩器
我想写一个解压器,用固定的哈夫曼代码压缩数据。 形成规范: 我希望解压器在BTYPE=01时解压数据 我知道我必须先解码哈夫曼代码,然后解压lz77 但是当BTYPE=01时,哈夫曼树不会与压缩数据一起存储 那么我如何在没有树的情况下解码哈夫曼密码呢 已编辑: 所以哈夫曼密码是这样的:Compression 用于使用固定哈夫曼码对压缩数据进行放气的解压缩器,compression,huffman-code,deflate,Compression,Huffman Code,Deflate,我想写一个解压器,用固定的哈夫曼代码压缩数据。 形成规范: 我希望解压器在BTYPE=01时解压数据 我知道我必须先解码哈夫曼代码,然后解压lz77 但是当BTYPE=01时,哈夫曼树不会与压缩数据一起存储 那么我如何在没有树的情况下解码哈夫曼密码呢 已编辑: 所以哈夫曼密码是这样的: 0 110000 1 110001 2 110010 144 110010000 145 110010001 255 111111111 256 0 257 1 258 10 259 11 260 100 279
0 110000
1 110001
2 110010
144 110010000
145 110010001
255 111111111
256 0
257 1
258 10
259 11
260 100
279 10111
280 11000000
287 11000111
我不明白的是,如果我遇到代码10我如何区分距离代码中的值2和值258,因为值0-23和256-297具有相同的代码固定的哈夫曼代码是预定义的。发件人:
不,哈夫曼密码不是这样的。长度/文字的代码长度均为7、8或9位。看看我的答案。
0 110000
1 110001
2 110010
144 110010000
145 110010001
255 111111111
256 0
257 1
258 10
259 11
260 100
279 10111
280 11000000
287 11000111
3.2.6. Compression with fixed Huffman codes (BTYPE=01)
The Huffman codes for the two alphabets are fixed, and are not
represented explicitly in the data. The Huffman code lengths
for the literal/length alphabet are:
Lit Value Bits Codes
--------- ---- -----
0 - 143 8 00110000 through
10111111
144 - 255 9 110010000 through
111111111
256 - 279 7 0000000 through
0010111
280 - 287 8 11000000 through
11000111
The code lengths are sufficient to generate the actual codes,
as described above; we show the codes in the table for added
clarity. Literal/length values 286-287 will never actually
occur in the compressed data, but participate in the code
construction.
Distance codes 0-31 are represented by (fixed-length) 5-bit
codes, with possible additional bits as shown in the table
shown in Paragraph 3.2.5, above. Note that distance codes 30-
31 will never actually occur in the compressed data.