NXP MCU 技术论坛
直播中

甘满盛

8年用户 1360经验值
擅长:386660
私信 关注
[问答]

如何使用rom\\miniz解压缩C# DeflateStream压缩缓冲区?

我在 PC 上有一个 12288 字节的缓冲区,该缓冲区已使用 C# DeflateStream 类进行了压缩,因此生成了一个原始的压缩数据缓冲区。

我通过串行 COM 将压缩数据发送到 ESP32。要解压缩,我想在一个函数中使用这段代码来使用 rom/miniz:

  tinfl_decompressor inflator;
  tinfl_init(&inflator);
  tinfl_status status = tinfl_decompress(&inflator, panel2, &inBufferSize, pBuffer, pBuffer, &outBufferSize, 0);
  if (status != TINFL_STATUS_DONE) return false;

pBuffer 指向一个用 malloc 成功分配的 12288+100 字节的缓冲区。

当我运行该程序时,ESP32 在 tinfl_decompress 处重新启动(如果我用状态注释 2 行则不会崩溃)。

- 我检查了传输,缓冲区是正确的。

- 我已经尝试使用 TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF 作为标志(因为目标缓冲区应该足以容纳整个未压缩的数据)

但它仍然崩溃。

我做错了什么?在上面的代码之前,miniz 是否有任何进一步的初始化要执行?

更多回帖

发帖
×
20
完善资料,
赚取积分