简而言之,我有一个插件可以完成生成 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/