gpt4 book ai didi

c++ - 将 jintarray 转换为 jfloatarray Android JNI

转载 作者:行者123 更新时间:2023-11-28 05:52:43 24 4
gpt4 key购买 nike

我想知道将 jintarray 转换为 jfloatarray 的正确方法是什么?

这就是我尝试转换它的方式,但它无法正常工作:

JNIEXPORT jdouble JNICALL Java_com_MES_yo_NativeClass_CalcSumDiff(JNIEnv * env, jclass cls,jintArray intarray1,  jintArray intarray2, jint ColsCount, jint RowsCount)
{


jboolean ji1,ji2;
jdouble Result = 0;
float * inputarray1 = env->GetFloatArrayElements((jfloatArray)intarray1,&ji1);
float * inputarray2 = env->GetFloatArrayElements((jfloatArray)intarray2,&ji2);

int sum = 0;
for(int i = 0 ; i < (RowsCount * ColsCount) - 1; i++)
{
sum += abs((pow(inputarray1[i], 1.5)/ 15.96871942) - (pow(inputarray2[i],1.5)/15.96871942));
/* __android_log_print(ANDROID_LOG_VERBOSE, "My Error", "inputarray1[i] = %d" ,inputarray1[i]);
__android_log_print(ANDROID_LOG_VERBOSE, "My Error", "inputarray2[i] = %d" ,inputarray2[i]);
__android_log_print(ANDROID_LOG_VERBOSE, "My Error", "sum = %d" ,sum);*/
}

env->ReleaseFloatArrayElements((jfloatArray)intarray1, inputarray1,0);
env->ReleaseFloatArrayElements((jfloatArray)intarray2, inputarray2,0);
return sum;
}

谢谢!

最佳答案

您不能神奇地将 jintArray 转换为 jFLoatArray,但您可以使用整数输入执行所有计算:

JNIEXPORT jdouble JNICALL Java_com_MES_yo_NativeClass_CalcSumDiff(JNIEnv * env, jclass cls,jintArray intarray1,  jintArray intarray2, jint ColsCount, jint RowsCount)
{
jboolean ji1,ji2;
jdouble Result = 0;
int * inputarray1 = env->GetIntArrayElements(intarray1,&ji1);
int * inputarray2 = env->GetIntArrayElements(intarray2,&ji2);

double sum = 0;
for(int i = 0 ; i < (RowsCount * ColsCount) - 1; i++)
{
sum += abs((pow(inputarray1[i], 1.5)/ 15.96871942) - (pow(inputarray2[i],1.5)/15.96871942));
/* __android_log_print(ANDROID_LOG_VERBOSE, "My Error", "inputarray1[i] = %d" ,inputarray1[i]);
__android_log_print(ANDROID_LOG_VERBOSE, "My Error", "inputarray2[i] = %d" ,inputarray2[i]);
__android_log_print(ANDROID_LOG_VERBOSE, "My Error", "sum = %d" ,sum);*/
}

env->ReleaseIntArrayElements(intarray1, inputarray1,0);
env->ReleaseIntArrayElements(intarray2, inputarray2,0);
return sum;
}

关于c++ - 将 jintarray 转换为 jfloatarray Android JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34895688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com