gpt4 book ai didi

javascript - 使用deflate算法实现GZIP解压

转载 作者:行者123 更新时间:2023-12-02 21:35:18 26 4
gpt4 key购买 nike

我需要从 JavaScript 解压缩 Base64 编码的 gzipdeflate 数据,而不增加太多包的大小(这就是为什么我不能只使用 帕科)。我发现了一个不错的小型库,用于解压缩 deflate 数据,名为 UZIP .

看来,gzip 只是带有 10 字节 header 和 8 字节页脚的 deflate。保证数据不会有任何损坏,并且不会有超出这十个字节的任何额外 header 。考虑到这一切,我假设我可以对数据进行 Base64 解码,将其转换为 Uint8Array,然后切掉页眉和页脚。

const data = // some Base64-encoded, gzipped string
const dataBytes = new Uint8Array(atob(data).split('').map(char => char.charCodeAt(0)));
const decompressed = UZIP.inflate(dataBytes.slice(10, -8));

此代码无限期挂起(可能是因为 UZIP 错误处理不当)。我尝试在 Node.js 和浏览器上使用 pakozlib,但都提示 header 无效。作为引用,从 Base64 解码后使用 zlib.gunzip 以及运行 pako.inflate (自动检测压缩类型),都可以正确解压缩 gzip 数据。

是否可以从 gzip 字符串中提取原始 deflate 数据?如果没有,是否有任何轻量级库可以同时解压缩 gzipdeflate

最佳答案

我发现 deflate 规范不包含 header ,但 zlib 包含 header ,并且许多库调用 zlib 解压缩 inflate,同时调用真正的通货膨胀inflateRaw。我将方法调用从 inflate 更改为 inflateRaw,它立即起作用了。

关于javascript - 使用deflate算法实现GZIP解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60517166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com