compression - 库在 zlib 压缩/放气代码中的哪个位置决定应该将块作为未压缩的形式复制到压缩流中?
问题描述
在zlib 技术细节的“最大扩展因子”部分中指出“在最坏的可能情况下,其他块类型会扩展数据,通缩回落到存储(未压缩)块。”
我很难弄清楚这个决定在 zlib compress / deflate代码中实际发生的位置。I can see that deflate_stored
is called when the selected level
is 0, which makes sense, but besides that I don't see it being used.
如果有人能指出我正确的方向,那将很有帮助。
此外,做出这些决定的块粒度(就未压缩数据而言)是多少?我知道在放气时,未压缩的块可以达到 64KB,但是压缩块没有定义的块大小。显然,这与霍夫曼代码对块的有用程度有关,但如果知道做出这些决定时是否存在块大小,那就太好了。
解决方案
块级别的决定在 tree.c ( https://github.com/madler/zlib/blob/master/trees.c )
推荐阅读
- python - R从Python tkinter中的列表框中检索选定的值
- javascript - 使用 if 语句时无法正确显示警报
- java - 在 2 个地理点之间生成可能的路径
- papaja - 摆脱数字下的数字标题
- java - 有没有办法删除 FCM 发送的推送通知数据消息?
- c++ - 无法找到向量的最小时间值
- javascript - 打字稿输出“=!;” 对于未定义/可为空的属性
- java - Akka 和 Android java.lang.VerifyError: Verifier denied class akka.actor
- ajax - Ajax 调用触发控制器功能
- kotlin - Kotlin 的逻辑“和”不会短路?