JNI:将无符号 int 转换为 jint

如何将无符号的int转换为jint?我是否必须将其转换,或者我可以在没有任何特殊处理的情况下将其退回?这基本上是我现在的代码,但我无法测试它,因为我没有在本地设置JNI。

JNIEXPORT jint JNICALL
Java_test_test(JNIEnv* env, jobject obj, jlong ptr)
{
    MyObject* m = (MyObject*) ptr; 
    unsigned int i = m->get(); 
    return i; 
}

答案 1

在一般情况下,等价于 ,因此可以保持大约一半的值。转换将静默地工作,但如果某个值为负值,或者如果某个值大于可以容纳的最大值,则结果将不是您所期望的。jintintunsigned intjintunsigned intjint


答案 2

jint是 的 typedef,因此所有常用的转换规则都适用。int32_t


推荐