首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带DICTID和ADLER32校验和节点的zlib充气

不带DICTID和ADLER32校验和节点的zlib充气
EN

Stack Overflow用户
提问于 2020-04-16 21:59:08
回答 1查看 311关注 0票数 0

我试图用NodeJs中的zlib模块来膨胀缓冲区。我遇到的问题是,我总是得到“意外结束的文件”错误,所以我使用了我的原始数据,让nodejs缩小它来比较字节值。

(1),所以这是我拥有的值:

120, 156, 106, 46, 97, 96, 96, 96, 73, 97, 96, 76, 1, 49, 152, 82, 24, 216, 226, 75, 138, 18, 147, 83, 115, 128, 60, 198, 92, 32, 161, 17, 173, 148, 158, 88, 146, 90, 158, 88, 169, 91, 80, 148, 162, 155, 155, 152, 153, 167, 91, 104, 96, 94, 172, 164, 83, 173, 148, 155, 153, 92, 148, 95, 172, 100, 101, 160, 103, 80, 27, 155, 149, 194, 32, 148, 145, 154, 88, 84, 146, 148, 154, 88, 18, 159, 153, 87, 146, 90, 84, 150, 152, 147, 196, 192, 176, 80, 41, 133, 129, 41, 191, 32, 145, 11, 104, 75, 113, 10, 3, 115, 94, 102, 14, 144, 85, 2, 97, 1, 0, 0, 0, 255, 255

(2) --这是zlib.deflateSync给我的:

120, 156, 1, 125, 0, 130, 255, 120, 156, 106, 46, 97, 96, 96, 96, 73, 97, 96, 76, 1, 49, 152, 82, 24, 216, 226, 75, 138, 18, 147, 83, 115, 128, 60, 198, 92, 32, 161, 17, 173, 148, 158, 88, 146, 90, 158, 88, 169, 91, 80, 148, 162, 155, 155, 152, 153, 167, 91, 104, 96, 94, 172, 164, 83, 173, 148, 155, 153, 92, 148, 95, 172, 100, 101, 160, 103, 80, 27, 155, 149, 194, 32, 148, 145, 154, 88, 84, 146, 148, 154, 88, 18, 159, 153, 87, 146, 90, 84, 150, 152, 147, 196, 192, 176, 80, 41, 133, 129, 41, 191, 32, 145, 11, 104, 75, 113, 10, 3, 115, 94, 102, 14, 144, 85, 2, 97, 1, 0, 0, 0, 255, 255, 164, 112, 54, 45, (粗体= same)

因此,据我从RFC中可以看出,前两个字节是压缩方法和标志,因此两者都有。另一个粗体部分是压缩数据。到目前一切尚好。

不匹配的第一部分是DICTID部分。但是根据RFC,它只有四个字节长,那么其他三个字节(255,120,156)是什么呢?最后一部分不是粗体,是压缩数据的ADLER32校验和。

问题:zlib (nodejs)是否能够在不使用DICTID和ADLER32校验和的情况下膨胀数据?

当前代码段

代码语言:javascript
复制
const data = /* Array from (1) */;
const buffer = Buffer.from(data);
const out = zlib.inflateSync(buffer);

输出Error: unexpected end of file

背景:我最终想要做的是使用如下所示,而不是用javascript。

注意:命令行程序zlib-flate在某种程度上能够膨胀(1)中的字节,所以我假设我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 01:34:00

经过几个小时的摸索和错误,我终于找到了问题所在。要能够从(1)中膨胀字节,必须设置finishFlush选项:

代码语言:javascript
复制
const result = zlib.inflateSync(buffer, {finishFlush: zlib.constants.Z_SYNC_FLUSH});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61260736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档