2014-10-07 105 views
1

在客户端,我将TypedArray转换为Blob并传输到服务器,以检查数据是否正确,我想比较客户端和服务器端的前五个值,Node.js将缓冲区转换为Int8Array

在客户端:

var fileReader = new FileReader(); 
fileReader.onload = function() { 
    callback(new Int8Array(this.result)); 
}; 
fileReader.readAsArrayBuffer(blob); 

(从我读回调FN前五值)

,但在服务器上,我发现代码转换BLOB缓存,并从我的理解,bufferarraybuffer是不一样的, var buffer1 = new Buffer(blob, 'binary');

确实缓冲区有类似arraybuffer的DataView东西,现在我怎么读buffer1第5个值作为我能在客户端做的整数?

回答

1

节点缓冲区当前完全基于Uint8Array。您可以使用Uint8Array实例执行的所有操作都可以通过一个Buffer实例来完成。甚至更多,因为缓冲区添加了额外的功能和属性。在内部,当必须创建一个Buffer实例时,它们实际上会创建一个Uint8Array实例,然后将其原型设置为Node Buffer原型。因此,您可以使用buffer1.buffer等访问基础ArrayBuffer等。

+0

upvoted,但是如果用一些示例代码展开答案,会很好:) – mido 2017-02-07 12:45:27

+1

Thanks for the upvote。事实上,我不是一个JS开发人员。我是一名编写C++扩展模块的C++开发人员。我知道一些关于V8,libuv和nodejs C++部分代码的内容。我看着节点缓冲区的内部实现,并希望通过分享我在那里看到的内容来提供帮助。但我认为js部分会更容易知道这些信息... – Viruslav 2017-02-08 13:26:46

相关问题