Как читать / записывать данные в ArrayBuffer из аддона C ++ Node.js?

Короче говоря, у меня есть дополнение, которое завершает операцию, которая приводит к uint8_t массив. Мне нужно преобразовать этот массив и его содержимое в 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)

Документы здесь. Последний аргумент определяет, будет ли блок памяти free‘до v8, когда ArrayBuffer GC’ed. Если вы используете kInternalizedпамять должна быть свободна с free,

Чтобы получить память, поддерживающую ArrayBufferиспользовать ab->GetContents(). Это возвращает содержание экземпляр класса, который имеет void* Data() метод.

Увидеть https://stackoverflow.com/a/31712512/1218408 для некоторых дополнительных примеров.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]