Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将无符号字符*转换为jbytearray_C_Java Native Interface_Type Conversion - Fatal编程技术网

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()
,这样做。