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

小小发 发布于 2015/07/04 20:59
阅读 463
收藏 0

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不熟悉求大哥大姐解答!!


加载中
0
红薯
红薯

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

0
WolfCS
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编码的。

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

引用来自“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编码的。

嗯,我实际上是现在要调用别人C写好的方法,这个C方法接收一个结构体参数返回一个结构体参数。

我现在的做法是在java端分别定义与结构体相对应的bean,我现迷惑的就是与之相对应的bean中参数的类型该如何定义

比如有这样一个结构体

struct Response
{
    char result;
    unsigned char status;
    unsigned short color;
    float brightness;
    char mosue[16];

};



在网上的资料上看到,C中的char对应java中的byte 我想是不是

char mosue[16]对应javabean的类型为byte[] mosue 呢?

unsigned char status;对应java中 boolean status 呢
对C完全不熟悉,求指导!谢谢。



返回顶部
顶部