簡體   English   中英

Mozilla ctypes,從c數組提供Arraybuffer

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM