我想知道DEFLATE如何确定块大小(我的意思是,在zlib中。)
在RFC 1591中,存在以下解释: "当压缩器确定开始使用新树的新块时,或者当块大小填满压缩器的块缓冲区时,压缩器终止块。"
这对我来说还不够。我想知道结束当前块需要什么条件并详细启动新块。
DEFLATE如何决定新鲜的发辫是否有用? 压缩器的块缓冲区的大小是多少?
答案 0 :(得分:7)
Z_FINISH
)时,zlib的deflate结束该块。 zlib中的deflate不会试图判断何时更早结束一个块可能是有益的。
在这种情况下,一个符号是一个文字或一个任意长度的匹配。
符号缓冲区的大小由memLevel
的{{1}}参数决定。 deflateInit2()
为memLevel
,这是deflateInit()
使用的默认值,会生成16,383个符号。 memLevel
可以是1到9,其中符号缓冲区大小为(1 << (memLevel + 6)) - 1
。