c++ - 如何从 C++ Node.js 插件读取/写入数据到 ArrayBuffer?

标签 c++ node.js arraybuffer node.js-addon

简而言之,我有一个插件可以完成生成 uint8_t 数组的操作。我需要将此数组及其内容转换为 ArrayBuffer,然后返回它。

相反,插件也可以接受一个 ArrayBuffer 作为输入,我需要将它连同它的内容一起转换成一个 uint8_t 数组。

我无法找到有关如何执行此操作的明确文档。我是 Node、v8、插件等方面的新手。如果有人知道如何执行此操作并且可以帮助我,那就太好了。

最佳答案

您可能希望使用 Uint8Array 而不是 ArrayBuffer,但是...

从现有的内存块创建一个ArrayBuffer:

// given void* data
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
    Isolate::GetCurrent(), data, byte_length, ArrayBufferCreationMode::kInternalized)

Docs are here.最后一个参数控制当 ArrayBuffer 被 GC 时,内存块是否会被 v8 free 释放。如果您使用 kInternalized,则内存必须可用 free 释放。

要获取支持 ArrayBuffer 的内存,请使用 ab->GetContents() .返回 Contents类实例,它有一个 void* Data() 方法。

参见 https://stackoverflow.com/a/31712512/1218408一些额外的例子。

关于c++ - 如何从 C++ Node.js 插件读取/写入数据到 ArrayBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189618/

相关文章:

带有性能工具的 C++ 程序 - 泄漏

python - 通过C++ 20协程制作python生成器

c++ - 根据两个属性对类指针的 vector 进行排序?

node.js - 防止垃圾邮件;使用 Node 邮件;使用发送邮件

Node.js 虚拟机 : How to cancel Script. runInNewContext()?

node.js - 使用 koa js 检索正文的字符串和 json

javascript - 将 JSZip 对象转换为 ArrayBuffer 的最佳方法是什么?

带指针参数的 C++ 函数

javascript - 如果二进制数据是 "4 byte single format",这意味着什么?如何在 JavaScript 中读取它?

javascript - 将 Canvas 内容序列化到 ArrayBuffer 并再次反序列化