我有一个字节数组,定义为
unsigned char ptr = new unsigned char[1024];
fillWithSomething(ptr, 1024);
然后,我需要将ptr
变量存储在V8 Engine的Local< Array>
变量或其他类型的V8数据类型中。
目前,我正在将字节数组转换为字符串,以便存储在Local< String>
变量中,但这种方法对我的应用程序来说效率很低。
提前致谢。
更新(感谢Vyacheslav Egorov)
我使用外部阵列测试解决方案,但我不能在我的node.js服务器代码上使用它。我有以下代码(在我的扩展端C ++):
Handle<Object> array = Object::New();
array->SetIndexedPropertiesToExternalArrayData(getBytes(), kExternalUnsignedByteArray, bytesSize);
return array;
我的问题是,如何在服务器代码(javascript)中使用array
变量来调用函数GetIndexedPropertiesExternalArrayData()
。
再次感谢
答案 0 :(得分:4)
最有效的方法是使用外部数组:
v8::Handle<v8::Object> external_array = v8::Object::New();
external_array->SetIndexedPropertiesToExternalArrayData(ptr, v8::kExternalUnsignedByteArray, 1024);
外部数组的良好示例API使用(包括终身管理)可以在d8.cc
中找到:https://github.com/v8/v8/blob/7a0c55bd0d07135ce317f0e95909120eaafd5973/src/d8.cc#L394-L591
答案 1 :(得分:0)
obj->SetIndexedPropertiesToExternalArrayData(data,
kExternalUnsignedByteArray,
length);
是正确的答案。 如果您需要更多示例,可以查看https://github.com/joyent/node 他们使用了很多v8功能。
项目的/ src文件夹中只有grep -nrw ".*SetIndexedPropertiesToExternalArrayData.*" "."
,您将获得SetIndexedPropertiesToExternalArrayData