获取在 zlib 流中读取的字节数
Getting number of bytes read in zlib stream
我正在使用 zlib.Inflate
来扩充一大块数据。我现在遇到的问题是,我所知道的是有多少字节的未压缩数据,但不知道压缩流中有多少字节。我目前只是将整个输入缓冲区写入 inflater,然后从中读取未压缩的字节数。这给了我正确的输出数据,但我必须知道消耗了多少字节才能继续解析剩余数据。
所以现在我做了以下测试:
var inflater = zlib.createInflate();
inflater.write(strm.buffer.slice(strm.position));
inflater.on("readable", (function(inflater, len) {
return function() {
console.log(inflater);
var decompData = inflater.read(len);
console.log(inflater);
var output = fs.createWriteStream("output.bin");
output.write(decompData);
}
})(inflater, len));
我检查了读取前后充气器的所有成员,但没有任何变化,除了读取缓冲区(带有解压缩数据)之外的每个值都是相同的。有没有办法确定从压缩缓冲区读取了多少字节?
提前谢谢你,克罗蒙
在调查了 zlib 解压缩模块中涉及的 C++ 和 JavaScript 文件后,我意识到这些文件都删除了有关读取了多少数据的信息。由于本机 zlib
流对 JavaScript 不可用,因此无法获取有关消耗的字节数的信息。
我更改了 Zlib.prototype._transform
以检查读取了多少字节,并更新了 Zlib
中保存消耗字节数的成员。有了它,它就像一个魅力:stream.seek(inflater._consumed);
除了在我看来不可能用 zlib 模块的当前布局执行此操作外,这可能没有太大帮助。
我正在使用 zlib.Inflate
来扩充一大块数据。我现在遇到的问题是,我所知道的是有多少字节的未压缩数据,但不知道压缩流中有多少字节。我目前只是将整个输入缓冲区写入 inflater,然后从中读取未压缩的字节数。这给了我正确的输出数据,但我必须知道消耗了多少字节才能继续解析剩余数据。
所以现在我做了以下测试:
var inflater = zlib.createInflate();
inflater.write(strm.buffer.slice(strm.position));
inflater.on("readable", (function(inflater, len) {
return function() {
console.log(inflater);
var decompData = inflater.read(len);
console.log(inflater);
var output = fs.createWriteStream("output.bin");
output.write(decompData);
}
})(inflater, len));
我检查了读取前后充气器的所有成员,但没有任何变化,除了读取缓冲区(带有解压缩数据)之外的每个值都是相同的。有没有办法确定从压缩缓冲区读取了多少字节?
提前谢谢你,克罗蒙
在调查了 zlib 解压缩模块中涉及的 C++ 和 JavaScript 文件后,我意识到这些文件都删除了有关读取了多少数据的信息。由于本机 zlib
流对 JavaScript 不可用,因此无法获取有关消耗的字节数的信息。
我更改了 Zlib.prototype._transform
以检查读取了多少字节,并更新了 Zlib
中保存消耗字节数的成员。有了它,它就像一个魅力:stream.seek(inflater._consumed);
除了在我看来不可能用 zlib 模块的当前布局执行此操作外,这可能没有太大帮助。