zlib会在没有DICTID和ADLER32校验和nodejs的情况下膨胀

问题描述 投票:0回答:1

我正在尝试使用NodeJ中的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,粗体] =相同)

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

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

问题

:zlib(nodejs)是否能够以某种方式膨胀数据而无需DICTID和ADLER32校验和?

当前代码段

const data = /* Array from (1) */;
const buffer = Buffer.from(data);
const out = zlib.inflateSync(buffer);

输出

Error: unexpected end of file

背景

:我最终想做的是is the following,但使用javascript而不是python。

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

我正在尝试使用NodeJ中的zlib模块为缓冲区充气。我遇到的问题是,我总是出现“意外的文件结尾”错误,因此我使用了我的原始数据,然后让nodejs缩小它来进行比较...

javascript node.js zlib inflate
1个回答
0
投票

经过数小时的反复试验,我终于弄清了问题所在。为了能够从(1)中增加字节,您必须设置finishFlush选项:

© www.soinside.com 2019 - 2024. All rights reserved.