Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mozilla ctypes,从c数组馈送Arraybuffer_Javascript_Casting_Ctypes_Mozilla_Arraybuffer - Fatal编程技术网

Javascript Mozilla ctypes,从c数组馈送Arraybuffer

Javascript Mozilla ctypes,从c数组馈送Arraybuffer,javascript,casting,ctypes,mozilla,arraybuffer,Javascript,Casting,Ctypes,Mozilla,Arraybuffer,我有一个带有两个参数(buffer,len)的JavaScript函数,其中buffer是长度为“len”的编码数据数组。我的函数返回两个值,没有问题。但是,我不知道如何将实际数据读取到JavaScript字符串中。readString不适用于我,因为数据不是UTF-8 我想知道是否有可能将数据(在我的例子中是“缓冲区”)馈送到长度相同、字节大小相同的ArrayBuffer中,您的函数返回两个值?你的意思是你的c函数返回一个指向数据的指针和一个int作为长度吗 假设您的c函数声明为 xxxx.d

我有一个带有两个参数(buffer,len)的JavaScript函数,其中buffer是长度为“len”的编码数据数组。我的函数返回两个值,没有问题。但是,我不知道如何将实际数据读取到JavaScript字符串中。readString不适用于我,因为数据不是UTF-8


我想知道是否有可能将数据(在我的例子中是“缓冲区”)馈送到长度相同、字节大小相同的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
建议ct_ptr[1]。内容将访问第二个元素。我试过了,发现[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.