我正在使用Android jni,并希望将unsigned long long C数据类型转换为等效的JNI包装器。等效的jni包装器应该是什么?此外,当我将编写将调用jni包装器的JAVA函数调用时,该无符号long long数据类型的JAVA方法参数的dataype应该是什么?
答案 0 :(得分:1)
Java不知道unsigned。所有Java数字原语都是有符号的(blame Gosling)。如果你真的需要通过JNI传输无符号的64位范围(你需要[0,2^64]
不仅[-2^63,2^63-1]
)那么没有等效的Java包装器,你需要分解这个值(比如uppper four)字节和低四个字节)。否则,无论处理器架构如何,您都可以使用简单的Java原语 long(JNI jlong),因为它是64位。