Node.js将缓冲区转换为Int8Array
问题描述:
在客户端,我将TypedArray转换为Blob并传输到服务器,以检查数据是否正确,我想比较客户端和服务器端的前五个值,Node.js将缓冲区转换为Int8Array
在客户端:
var fileReader = new FileReader();
fileReader.onload = function() {
callback(new Int8Array(this.result));
};
fileReader.readAsArrayBuffer(blob);
(从我读回调FN前五值)
,但在服务器上,我发现代码转换BLOB缓存,并从我的理解,buffer
和arraybuffer
是不一样的, var buffer1 = new Buffer(blob, 'binary');
确实缓冲区有类似arraybuffer的DataView
东西,现在我怎么读buffer1
第5个值作为我能在客户端做的整数?
答
节点缓冲区当前完全基于Uint8Array。您可以使用Uint8Array实例执行的所有操作都可以通过一个Buffer实例来完成。甚至更多,因为缓冲区添加了额外的功能和属性。在内部,当必须创建一个Buffer实例时,它们实际上会创建一个Uint8Array实例,然后将其原型设置为Node Buffer原型。因此,您可以使用buffer1.buffer等访问基础ArrayBuffer等。
upvoted,但是如果用一些示例代码展开答案,会很好:) – mido 2017-02-07 12:45:27
Thanks for the upvote。事实上,我不是一个JS开发人员。我是一名编写C++扩展模块的C++开发人员。我知道一些关于V8,libuv和nodejs C++部分代码的内容。我看着节点缓冲区的内部实现,并希望通过分享我在那里看到的内容来提供帮助。但我认为js部分会更容易知道这些信息... – Viruslav 2017-02-08 13:26:46