[英]Mozilla ctypes, feeding Arraybuffer from c array
我有一個帶兩個參數(buffer,len)的JavaScript函數,其中buffer是長度為“ len”的編碼數據數組。 我的函數返回兩個值沒有問題。 但是,我不知道如何將實際數據讀取為JavaScript字符串。 readString對我不起作用,因為數據不是UTF-8。
我想知道是否有可能將數據(在我的情況下為“ buffer”)饋送到相同長度和相等字節大小的ArrayBuffer
您的函數返回兩個值? 您的意思是您的c函數返回一個指向數據的指針和一個int作為長度嗎?
假設您的c函數聲明為
xxxx.declare('function_name',
ctypes.default_abi,
ctypes.int, //the return value, suppose as length
ctypes.uint8_t.ptr.ptr);
var ct_ptr=new ctypes.uint8_t.ptr();
var ct_len=function_name(ct_ptr.address());
ct_ptr.contents is the 1st element of the array
如何從uint8_t類型的ctype指針訪問javascript中的數據,建議使用ct_ptr [1]。contents將訪問第二個元素。 我嘗試過,但發現[1]不可接受。 然后我嘗試演員
var ct_array=ctypes.cast(ct_ptr, ctypes.uint8_t.array(4));
//then ct_array[0 ... 3] is accessible.
當數組大小不超過4時,它確實成功。但是,它將點的值轉換為字節數組。 正確的方法是:
var ct_arrayptr=ctypes.cast(ct_ptr, ctypes.uint8_t.array(ct_len.value).ptr);
var ct_array=ct_arrayptr.contents;
//now ct_array[0 ... ct_len.value-1] is accessible.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.