deflate 算法中的长度字母表是否总是由大于 256 的代码组成?
will the length alphabet in the deflate algorithm always consist of codes > 256?
RFC1951 说“5 位:HLIT,# of Literal/Length 代码 - 257 (257 - 286)”和“HLIT + 257 代码literal/length 字母表的长度,使用码长霍夫曼码 ".
编码
所以文字和长度使用相同的字母表,而距离使用它们自己不同的字母表。
文字在 0-255 之间是有意义的。块字符的结尾是 256,它不能用 8 位字节表示,并且由于 257 和 286 之间的任何东西都不能用单个字节表示,因此得出该范围内的任何代码的结论似乎并不合理是长度码?
还有长度代码代表的实际长度的问题。在这个例子中,我正在看它看起来你可以通过减去 254 从长度代码 (259) 中确定实际长度 (5) 我可以只取长度代码并从中减去 254 但我猜长度代码可以存在该方法不起作用的情况?
是的。来自 RFC:
Extra Extra Extra
Code Bits Length(s) Code Bits Lengths Code Bits Length(s)
---- ---- ------ ---- ---- ------- ---- ---- -------
257 0 3 267 1 15,16 277 4 67-82
258 0 4 268 1 17,18 278 4 83-98
259 0 5 269 2 19-22 279 4 99-114
260 0 6 270 2 23-26 280 4 115-130
261 0 7 271 2 27-30 281 5 131-162
262 0 8 272 2 31-34 282 5 163-194
263 0 9 273 3 35-42 283 5 195-226
264 0 10 274 3 43-50 284 5 227-257
265 1 11,12 275 3 51-58 285 0 258
266 1 13,14 276 3 59-66
RFC1951 说“5 位:HLIT,# of Literal/Length 代码 - 257 (257 - 286)”和“HLIT + 257 代码literal/length 字母表的长度,使用码长霍夫曼码 ".
编码所以文字和长度使用相同的字母表,而距离使用它们自己不同的字母表。
文字在 0-255 之间是有意义的。块字符的结尾是 256,它不能用 8 位字节表示,并且由于 257 和 286 之间的任何东西都不能用单个字节表示,因此得出该范围内的任何代码的结论似乎并不合理是长度码?
还有长度代码代表的实际长度的问题。在这个例子中,我正在看它看起来你可以通过减去 254 从长度代码 (259) 中确定实际长度 (5) 我可以只取长度代码并从中减去 254 但我猜长度代码可以存在该方法不起作用的情况?
是的。来自 RFC:
Extra Extra Extra
Code Bits Length(s) Code Bits Lengths Code Bits Length(s)
---- ---- ------ ---- ---- ------- ---- ---- -------
257 0 3 267 1 15,16 277 4 67-82
258 0 4 268 1 17,18 278 4 83-98
259 0 5 269 2 19-22 279 4 99-114
260 0 6 270 2 23-26 280 4 115-130
261 0 7 271 2 27-30 281 5 131-162
262 0 8 272 2 31-34 282 5 163-194
263 0 9 273 3 35-42 283 5 195-226
264 0 10 274 3 43-50 284 5 227-257
265 1 11,12 275 3 51-58 285 0 258
266 1 13,14 276 3 59-66