NDK char* 如何转成 jcharArray 返回给java层
在C层有一个字节数组,char*,知道它的长度,现在要把这个数组传给java层,其实就是要把它变成jcharArray吧,那怎么变呢?...
在C层有一个字节数组,char*,知道它的长度,现在要把这个数组传给java层,其实就是要把它变成jcharArray 吧,那怎么变呢?
展开
2个回答
展开全部
env下有2个函数:
jcharArray NewCharArray(JNIEnv *env, jsize len);
void (JNICALL *SetCharArrayRegion)
(JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
要注意char*里的字符编码
jcharArray NewCharArray(JNIEnv *env, jsize len);
void (JNICALL *SetCharArrayRegion)
(JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
要注意char*里的字符编码
追问
编译报错啊
expected 'jchar const *' but argument is of type 'char *'
c语言层的是char*,
我想返回给java的是一个byte数组
应该用这两个方法
NewByteArray
SetByteArrayRegion
问题解决了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-10-17
展开全部
char msgdata[40] = {0};
// 转为 byte[] 返回
jbyteArray byteArray = env->NewByteArray(40);
env->SetByteArrayRegion(byteArray, 0, 40, (jbyte *) msgdata);
return byteArray;
// 转为 byte[] 返回
jbyteArray byteArray = env->NewByteArray(40);
env->SetByteArrayRegion(byteArray, 0, 40, (jbyte *) msgdata);
return byteArray;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询