转换二进制缓冲区的NodeJS为JavaScript ArrayBuffer [英] Convert a binary NodeJS Buffer to JavaScript ArrayBuffer

查看:1214
本文介绍了转换二进制缓冲区的NodeJS为JavaScript ArrayBuffer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么能转换二进制的NodeJS缓冲到一个JavaScript ArrayBuffer?

How can I convert a NodeJS binary buffer into a JavaScript ArrayBuffer?

推荐答案

的实例缓存也都在node.js中4.x和更高 Uint8Array 的实例。因此,最有效的解决方案是直接访问 buf.buffer 属性,每个的 http://stackoverflow.com/a/31394257/1375574 。缓冲构造也需要一个ArrayBufferView参数,如果你需要去另一个方向。

Instances of Buffer are also instances of Uint8Array in node.js 4.x and higher. Thus, the most efficient solution is to access the buf.buffer property directly, as per http://stackoverflow.com/a/31394257/1375574. The Buffer constructor also takes an ArrayBufferView argument if you need to go the other direction.

请注意,这将不会创建一个副本,这意味着写入任何ArrayBufferView将通过写信给原始缓冲区的实例。

Note that this will not create a copy, which means that writes to any ArrayBufferView will write through to the original Buffer instance.



在旧版本中,Node.js的既有ArrayBuffer作为V8的一部分,但Buffer类提供了更加灵活的API。为了读取或写入一个ArrayBuffer,你只需要创建一个视图,并复制对面。


In older versions, node.js has both ArrayBuffer as part of v8, but the Buffer class provides a more flexible API. In order to read or write to an ArrayBuffer, you only need to create a view and copy across.

从缓冲区ArrayBuffer:

From Buffer to ArrayBuffer:

function toArrayBuffer(buf) {
    var ab = new ArrayBuffer(buf.length);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buf.length; ++i) {
        view[i] = buf[i];
    }
    return ab;
}

从ArrayBuffer到缓冲区:

From ArrayBuffer to Buffer:

function toBuffer(ab) {
    var buf = new Buffer(ab.byteLength);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buf.length; ++i) {
        buf[i] = view[i];
    }
    return buf;
}

这篇关于转换二进制缓冲区的NodeJS为JavaScript ArrayBuffer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆