此转换是从jint *(32位有符号)到uint32_t *有效吗?它有效,但它似乎是一个黑客。编程语言是C提前将JNI签名指针指向无符号本地指针(C)
JNIEXPORT jint JNICALL Java_foo_bar(JNIENV *env, jobject thisObj, jintArray inputDataJava){
/* Input data is signed */
jint * inputDataSigned = (*env)->GetIntArrayElements(env,inputDataJava,0);
/* Input data has been casted to unsigned. Is that valid? */
uint32_t * inputDataUnsigned = (uint32_t *) (*env)->GetIntArrayElements(env,inputDataJava,0);
}
感谢
这是C还是C++?请做出决定。对于C来说,这绝对是你不应该做的一件黑客。 (我认为对于C++也是如此,但不是绝对的......)只需访问并转换*值*即可。 –
它是C.编辑。谢谢。 – ben
然后,我已经足以删除C++标签了。因此,如果它是C,我可以确定通过不兼容类型的指针访问值是不允许的。转换值本身。 –