gpt4 book ai didi

c++ - Node C++ 插件 - 当类型化数组 (Float32Array) 作为参数传递时,如何访问它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:57 25 4
gpt4 key购买 nike

我想使用 V8 Float32Array 数据结构。我该如何初始化它?

我也对直接内存访问数据感兴趣。这怎么可能?

最佳答案

已更新

现在最好的方法是使用助手 Nan::TypedArrayContents .

assert(args[i]->IsFloat32Array());
Local<Float32Array> myarr = args[i].As<Float32Array>();
Nan::TypedArrayContents<float> dest(myarr);
// Now use dest, e.g. (*dest)[0]

node-canvas 中有一个很好的例子.


原始答案,显示了帮助程序为何有用

v8 API 现在变化很快,所以这取决于你的 node/io.js 版本。要访问作为参数提供的数组中的数据,这应该适用于 Node 0.12 到 io.js <3.0:

assert(args[i]->IsFloat32Array()); // These type-check methods are available.
Local<Float32Array> myarr = args[i].As<Float32Array>();
void* dataPtr = myarr->GetIndexedPropertiesExternalArrayData();

在 io.js >=3.0 (v8 4.3) 中,您应该改用 ArrayBuffer::GetContents。 (我还没有使用过这个,当 3.0 发布时会更新这个。)文档是 here .

在 Node 0.10 中,TypedArrays 是自制的。这是一种方法:

Local<Object> buffer = args[i]->Get(NanNew("buffer"))->ToObject();
void* dataPtr = buffer->GetPointerFromInternalField(0);

构造类型化数组可以通过以下方式完成:

 Float32Array::New(ArrayBuffer::New(Isolate::GetCurrent(), size * 4), 0, size);

关于c++ - Node C++ 插件 - 当类型化数组 (Float32Array) 作为参数传递时,如何访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com