2
我在Android jni中工作,並希望將unsigned long long C數據類型轉換爲等效的JNI包裝。相應的jni包裝應該是什麼?另外,當我將編寫將調用jni包裝器的JAVA函數調用時,該unsigned long long數據類型的JAVA方法參數的dataype應該是什麼?將無符號long long轉換爲等價的jni數據類型?
我在Android jni中工作,並希望將unsigned long long C數據類型轉換爲等效的JNI包裝。相應的jni包裝應該是什麼?另外,當我將編寫將調用jni包裝器的JAVA函數調用時,該unsigned long long數據類型的JAVA方法參數的dataype應該是什麼?將無符號long long轉換爲等價的jni數據類型?
Java不知道未簽名。所有Java數字基元都經過簽名(blame Gosling)。如果你真的需要通過JNI傳輸未簽名的64位範圍(這是你需要[0,2^64]
不僅[-2^63,2^63-1]
),那麼沒有等效的Java包裝,你需要分解的值(如uppper四個字節和四個字節)。否則,無論處理器體系結構如何,您都可以使用簡單的Java原語long(JNI jlong),因爲它是64位。
我們正在嘗試使用byte []發送和接收數據。這是對的嗎 ? – Harshad
是的,你絕對可以使用jbyteArray。但要小心獲得正確的排序。 JVM是大端的,但是你不能假設底層硬件的字節順序。儘管它很可能是低端的,這同樣不方便。如果有疑問,請進行算術分解(即除以0xFF模),而不是僅通過地址調用字節。 –
如果它回答了您的問題,請考慮接受並提高您的費率。 –