总之,我有一个插件,完成一个操作,导致uint8_t
阵列。我需要将此数组及其内容转换为ArrayBuffer
,然后返回。如何从C++ Node.js插件读取/写入数据到ArrayBuffer?
相反,插件也可以接受ArrayBuffer
作为输入,并且我需要将其连同其内容一起转换为uint8_t
阵列。
我很难找到明确的文件如何这样做。我是Node,v8,插件等新手。如果有人知道如何做到这一点,并可以帮助我,这将是伟大的。
总之,我有一个插件,完成一个操作,导致uint8_t
阵列。我需要将此数组及其内容转换为ArrayBuffer
,然后返回。如何从C++ Node.js插件读取/写入数据到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
'd。如果使用kInternalized
,则内存必须可用free
释放。
要获得内存支持ArrayBuffer
,请使用ab->GetContents()
。返回一个Contents类实例,它具有void* Data()
方法。
有关其他示例,请参阅https://stackoverflow.com/a/31712512/1218408。
你说得对,Uint8Array是首选,但对于这个特定的实现,它被指定我的程序必须返回一个ArrayBuffer。至于其他方面,我最终确定了它,但kInternalized对我来说是新的。谢谢。 –