Короче говоря, у меня есть дополнение, которое завершает операцию, которая приводит к uint8_t
массив. Мне нужно преобразовать этот массив и его содержимое в 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)
Документы здесь. Последний аргумент определяет, будет ли блок памяти free
‘до v8, когда ArrayBuffer GC’ed. Если вы используете kInternalized
память должна быть свободна с free
,
Чтобы получить память, поддерживающую ArrayBuffer
использовать ab->GetContents()
. Это возвращает содержание экземпляр класса, который имеет void* Data()
метод.
Увидеть https://stackoverflow.com/a/31712512/1218408 для некоторых дополнительных примеров.
Других решений пока нет …