C 将无符号字符*转换为jbytearray
我正在尝试使用以下代码将C 将无符号字符*转换为jbytearray,c,java-native-interface,type-conversion,C,Java Native Interface,Type Conversion,我正在尝试使用以下代码将无符号字符*转换为jbyteArray int callWR(const char *name,unsigned char *ubuf) { jbyteArray bArray=env->NewByteArray(strlen((const char *)ubuf)); env->SetByteArrayRegion(bArray, 0, strlen((const char *)ubuf), (jbyte *)ubuf); jstr
无符号字符*
转换为jbyteArray
int callWR(const char *name,unsigned char *ubuf)
{
jbyteArray bArray=env->NewByteArray(strlen((const char *)ubuf));
env->SetByteArrayRegion(bArray, 0, strlen((const char *)ubuf), (jbyte *)ubuf);
jstring tableName= (env)->NewStringUTF(name);
int status;
status=(int)(env)->CallStaticIntMethod(clsMC,midWRow,tableName,bArray);
env->DeleteLocalRef(bArray);
return status;
}
这是通过JNI将字节数组参数传递给java函数的正确方法吗?类型转换
(jbyte*)ubuf
是将无符号字符*
转换为jbyte*
的有效方法吗?我在目的地得到的价值观似乎是一团糟。请帮帮我。铸件应该可以用了。但是不确定ubuf
上的strlen()
。那个字节数组真的是以空字符(\0
)结尾的文本吗?您应该将字节数组的正确长度作为参数发送。您不必显式地执行DeleteLocalRef
,它将在超出范围时执行。那么还有其他方法获得大小吗sizeof(ubuf)
没有给出正确的结果。您必须将长度添加到函数参数列表中:int callWR(const char*name,unsigned char*ubuf,size\t ubuf\u length)
或类似的值。我们也可以使用并简单地调用BytePointer.get()
,这样做。