node.js-如何定义uint8_t数组并在ref上转换为字符串

时间:2019-03-13 03:47:30

标签: c++ node.js ref node-ffi

我使用node-ffi来加载.dll lib,并使用ref,ref-struct,ref-array定义c ++数据类型。我发现uint8_t数组无法转换为字符串。

例如:

var ffi = require('ffi');
var ref = require('ref');
var struct = require('ref-struct');
const refArray = require('ref-array')

C ++中的_VCI_BOARD_INFO_EX参数(未用node.js编写):

typedef struct _VCI_BOARD_INFO_EX{ 
     uint8_t ProductName[32];
    }

定义_VCI_BOARD_INFO_EX结构:

var VCI_BOARD_INFO_EX = struct({
  ProductName: refArray(ref.types.uint8, 32)
})

打开lib.dll:

const dll = ffi.Library('./lib.dll', {
   VCI_ReadBoardInfoEx: ['int', [ref.types.uint32, ref.refType(VCI_BOARD_INFO_EX)]]
})

调用VCI_ReadBoardInfoEx库:

let str = ref.alloc(VCI_BOARD_INFO_EX);
let borInfo = dll.VCI_ReadBoardInfoEx(0,str);   
console.log(JSON.stringify(str.deref()));

显示控制台:

{"ProductName":[71,105,110,107,103,111,95,85,83,66,95,67,65,78,95,65,100,97,112,116,111,114,0,0,0,0,0,0,0,0,0,0]}

ProductName得到一个int数组,在正确的情况下,它是一个字符串。

0 个答案:

没有答案