亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

沒有 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 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號