gpt4 book ai didi

javascript - Nodejs 文件 deflate 未产生预期结果

转载 作者:行者123 更新时间:2023-12-03 01:57:59 26 4
gpt4 key购买 nike

我通过网络收到一个字节数组,其中包含压缩的 xml 文件。我使用以下方法进行充气和放气。

let file = "./xmls/test.xml";
let arr = [120, 218, 188, 189, 121, 115, 219, 72, 150, 47, 250, 255, 251, 20, 169, 154, 59, 225, 174, 30];
//only took the first 20 bytes of this huge array for this example

zlib.inflate(Buffer.from(arr), (error, resultBuffer) => {
fs.writeFile(file, resultBuffer, () => {
console.log('done');
})
});

结果 xml 文件大小为 280.458 字节,不含任何非 ascii(非法)字符。
完成此操作后,我在新进程中调用以下代码

let file = "./xmls/test.xml";
fs.readFile(file, (readFileError, readFileBuffer) => {
zlib.deflate(readFileBuffer, (deflateError, deflateBuffer) => {
console.log(deflateBuffer);
// <Buffer 78 9c bc bd 69 73 db 48 96 36 fa fd fe 8a 54 cd 9d 70 77 bf ...
// 120 156 188 189 105 115 219 72 150 54 250 253 254 138 84 205 157 112 119 191
})
})

如您所见,初始字节数组与压缩输出不匹配
120 218 188 189 121 115 219 72 150 47 250 255 251 20 169 154 59 225 174 30 对比
120 156 188 189 105 115 219 72 150 54 250 253 254 138 84 205 157 112 119 191

我也尝试过基于流的方法,但它产生了相同的结果。
xml文件压缩后如何获取初始字节数组?

最佳答案

您可能不能,但这没关系。一般来说,您不应期望可以解压缩然后重新压缩为完全相同的内容,除非您使用相同的库、完全相同的库版本以及相同的压缩设置。谁知道压缩数据从哪里来,以及用什么来生成它。

唯一的保证是,如果您压缩然后解压缩,您将得到与开始时完全相同的内容。这就是无损的含义,这就是您应该验证的内容。不需要重建相同的压缩数据流,因为通常许多压缩数据流可以产生相同的未压缩输出。压缩器需要根据所使用的算法和具体代码,以及执行时间和用户要求的压缩比之间的平衡来找到一个好的压缩器。

关于javascript - Nodejs 文件 deflate 未产生预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50151224/

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