2017-05-25 127 views
0

总之,我有一个插件,完成一个操作,导致uint8_t阵列。我需要将此数组及其内容转换为ArrayBuffer,然后返回。如何从C++ Node.js插件读取/写入数据到ArrayBuffer?

相反,插件也可以接受ArrayBuffer作为输入,并且我需要将其连同其内容一起转换为uint8_t阵列。

我很难找到明确的文件如何这样做。我是Node,v8,插件等新手。如果有人知道如何做到这一点,并可以帮助我,这将是伟大的。

回答

1

你可能想用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

+0

你说得对,Uint8Array是首选,但对于这个特定的实现,它被指定我的程序必须返回一个ArrayBuffer。至于其他方面,我最终确定了它,但kInternalized对我来说是新的。谢谢。 –