2013-10-15 2 views
2

Я работаю над расширением Firefox, которое получает двоичные изображения как ArrayBuffersuint8_t.js-ctypes из javascript объектов

В моем расширении я загружаю DLL-файл, который имеет функцию, которую мне нужно использовать на этом полученном изображении. Функция принимает параметр ctype.uint8_t.ptr и возвращает значение ctype.uint8_t.ptr.

Я не могу найти способ преобразования ArrayBuffer в этот конкретный тип, чтобы я мог передать его вместе с функцией. Есть ли правильный способ сделать это?

Использование ImplicitConvert() дает Ошибка: аргумент должен быть неотрицательным целым числом.

+0

Удивительный вопрос! Вы все еще работаете jsctypes в последнее время? У вас есть это в open source где-то? :) – Noitidart

ответ

2

Вы должны быть в состоянии сделать только:

var a = new Uint8Array(1<<10); 
var ptr = new ctypes.uint8_t.ptr(a.buffer); 

Материал не документировано, кажется, но есть some tests, которые демонстрируют это.

+1

Возможно, будет работать, но я получаю следующую ошибку: TypeError: ожидаемый указатель типа, полученный (void 0) –

+1

Я предполагаю, что каким-то образом я получаю недопустимые данные в a.buffer. Есть ли способ лечения для этого? В соответствии с атрибутом длины нового Uint8Array, который я создаю, длина равна 19. –

+1

Работает. Спасибо за ваш ответ. Но мне все еще интересно, как проверить массив, прежде чем пытаться указать на него. Я могу использовать блоки try и catch, но знание заранее может быть более эффективным. –

Смежные вопросы