为了账号安全,请及时绑定邮箱和手机立即绑定

没有 DICTID 和 ADLER32 校验和 nodejs 的 zlib 膨胀

没有 DICTID 和 ADLER32 校验和 nodejs 的 zlib 膨胀

哔哔one 2022-07-01 10:21:36
我正在尝试使用 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, (粗体=相同)据我所知,前两个字节是压缩方法和标志,因此两者都有。另一个粗体部分是压缩数据。到目前为止,一切都很好。第一个不匹配的部分是 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背景:我最终要做的是以下内容,但使用的是javascript而不是python。注意:命令行程序zlib-flate能够以某种方式膨胀(1)中的字节,所以我假设我做错了什么。
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

经过数小时的跟踪和错误,我终于弄清楚了问题所在。为了能够从 (1) 中膨胀字节,您必须设置 finishFlush 选项:

const result = zlib.inflateSync(buffer, {finishFlush: zlib.constants.Z_SYNC_FLUSH});


查看完整回答
反对 回复 2022-07-01
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号