jni调用C中方法char[]问题

发布于 2021-11-27 00:56:41 字数 412 浏览 941 评论 5

C程序中定义了一个结构体

struct Gateway
{
     char destIp[16];
     int destPort;
     char  destMac[24];
};

C程序中有一个方法:turnOn(struct Gateway *gw);

那么我java中native方法做C程序包装时传什么样的参数能赋值给 结构体中的 char destIp[16] 呢??

是char[] 吗?

但是我看 java中是byte 对应 C中的 char 呀

小弟对jni和c不熟悉求大哥大姐解答!!


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

顾挽 2021-12-01 02:48:12

引用来自“WolfCS”的评论

实际上是一个在native层访问java层对象的问题,对吗?

可以将一个byte array传到native层,在native层中,可以通过GetByteArrayElements()函数,从java的byte array中获取到native层可用的jbyte数组,然后对这个数组进行操作。jbyte是一个typedef,类型为signed char。

将java的string对象传递到native层的话,可以通过env->GetStringUTFChars(text, NULL)函数来得到一个char数组,这个数组是字符串UTF-8编码的。

甜扑 2021-11-30 11:07:43

我在下面回复你了,求指导!

柒夜笙歌凉 2021-11-30 11:07:28

实际上是一个在native层访问java层对象的问题,对吗?

可以将一个byte array传到native层,在native层中,可以通过GetByteArrayElements()函数,从java的byte array中获取到native层可用的jbyte数组,然后对这个数组进行操作。jbyte是一个typedef,类型为signed char。

将java的string对象传递到native层的话,可以通过env->GetStringUTFChars(text, NULL)函数来得到一个char数组,这个数组是字符串UTF-8编码的。

终遇你 2021-11-29 00:28:58

泪冰清 2021-11-29 00:20:05

JNI 里有专门针对字节数组操作的方法,不过我忘了是哪个了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文