nodejs封装了一个c库 通过c库返回来一个内存指针,但数据不知道如何读出来,请高手帮解答下 代码片如下: uint8_t = ref.types.uint8; var uint8_ptr = ref.refType(uint8_t); var Struct = require(‘ref-struct’); var pic_t = Struct( { data:uint8_ptr, linesize:’int’, pts:int64_t, dts:int64_t, duration:’int’ } ); var picptr = ref.refType(pic_t); 通过调用c库的回调会返回一个picptr的对象,通过 var picture = pic.deref(); var data = picture.data0; console.log('canvas render one frame, pts’+ picture.pts); 可以正确的获取picture中的pts成员的值, 但要如何获取data呢,data是一个uint8* 指针 现在的问题是如何将data中的值读出来 将data作为数组,data[1]就是undefined 谢谢!
多谢回复! 我实验过返回的picptr对象,通过deref()我可以得到pts 成员的值, 说明是可以返回指针的,只要deref后是nodejs中可识别的数据结构 只是由于deref(picptr)后得到的是一个 pic_t对象因此可以直接 使用pic_t.pts来访问 但若我直接对 var data = picture.data0; data.deref()之后,仅仅是一个uint8_t,不知到如何能转化成类似数组的对象
答案参考 github上 @TooTallNate 大牛的回复: @peterfuture So in that case you can just do a “uint8*” type. This will return a buffer with only length 1 though, so at that point you call reinterpret(rawDataByteLength) to get a new Buffer at the same address space but with the amount of bytes you requested.
遇到类似问题的同学可参考