此轉換是從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,我可以確定通過不兼容類型的指針訪問值是不允許的。轉換值本身。 –