新的Uint32Array(buff,start_pos,arr_len)用Node.js返回意外的结果

我一直在尝试读取从node.js程序的URL中压缩的大型二进制文件。 为了简化问题,我试图从stream的开头读取两个无符号的整数。

看起来,给定一个大的缓冲区,下面的代码(不正确)返回相同的数组为a1和a2在Node.js,但(正确)不会返回相同的数组, XMLHttpRequest的:

var bufferPos = 0; var a1 = new Uint32Array(bData, bufferPos, 1); bufferPos += 4; var a2 = new Uint32Array(bData, bufferPos, 1); 

无论数据中的内容如何,​​a1和a2总是看起来与整个缓冲区大小相同,所以我不得不尝试这个更好的结果,但是我需要从一个值数组转换为Uint32 :

 var bufferPos = 0; var a1 = new Uint32Array(bData.slice(bufferPos, (bufferPos+=4))); var a2 = new Uint32Array(bData.slice(bufferPos, (bufferPos+=4))); 

此代码处于callback状态,构build内容并将数据传递给bData的代码位于包含以下内容的https.get调用中:

 //In https.get() tBuffer = null; var gunzip = zlib.createGunzip(); resp.pipe(gunzip); gunzip.on('data', (data) => { if (tBuffer === null){ tBuffer = data; } else { tBuffer = Buffer.concat([tBuffer, data]); }).on('end', () => { //callback code in here callback(tBuffer); }); 

我是否在Node.js中以某种方式处理了响应数据,这与Chrome XMLHTTPRequest响应中所期望的不同? 对GZIP的呼叫也是一个痛苦…我错过了一些步骤?

我应该不是因为某种原因试图将回应内容parsing为callback缓冲区吗?

谢谢您的帮助。