首页 > 解决方案 > zlib Z_DATA_ERROR 膨胀问题

问题描述

我有这个问题,这可能很简单,但我无法解决它。我使用 python 脚本(导入 zlib)放气,并使用 zlib 版本 1.2.11 在嵌入式平台上进行充气,2017 年 1 月 15 日。

出于测试目的,我在 ROM 中创建了一个常量表,它是脚本创建的压缩数据。z_stream 结构称为 test_stream。

如果我将 test_stream.next_in 指向 ROM 中的常量表/缓冲区,膨胀工作正常,数据恢复正常,没问题。

但是,如果我从 ROM 复制到 RAM 缓冲区并将该 RAM 缓冲区传递给 test_stream.next_in,则 inflateInit(&test_stream) 返回 Z_DATA_ERROR (-3) 并且 test_stream.msg 包含:“--缺少块尾”或“无效的代码长度设置”。

显然,我已经检查过 RAM 缓冲区是否从 ROM 正确复制。我在这里遗漏了什么,RAM 缓冲区是否需要对齐或其他什么?我知道这看起来很奇怪,但任何想法都会受到赞赏。

标签: zlib

解决方案


不,没有对齐要求。您必须给它错误的地址,或者没有正确复制压缩数据。


推荐阅读