2013-10-15 30 views
2

我正在接收的二進制圖像作爲ArrayBuffers的uint8_t Firefox擴展。JS-ctypes的從JavaScript對象

在我的擴展中,我加載了一個.dll文件,該文件具有我需要用於接收的圖像的功能。該函數採用ctype.uint8_t.ptr參數並返回ctype.uint8_t.ptr值。

我似乎無法找到一種方法將ArrayBuffer轉換爲此特定的ctype,以便我可以將它傳遞給函數。有沒有一個正確的方法來做到這一點?

使用ImplicitConvert()給出一個錯誤:參數必須是非負整數

+0

非常好的問題!你最近還在做jsctypes的工作嗎?你有開源的地方嗎? :) – 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塊,但事先知道可能會更有效。 –