我正在尝试将字节转换为 JNI 中的浮点数。如果我在调用 GetByteArrayElements 方法时键入 cast 它,它就不起作用。打印出浮点变量会打印出一个指针。我知道它是一个指针,因为通常它类似于“123451234993305848212225.000000” 但是,如果我在 printf 语句中将其强制转换为浮点数,它会显示正确的值。为什么会这样?我有以下两组代码片段-
jbyte *testTensor_data = (env)->GetByteArrayElements(NV21FrameData,0);
__android_log_print(ANDROID_LOG_INFO, "Torchandroid", "C test print: %f",(float) (testTensor_data[0]));
这行得通。print 语句显示正确的数字。
jfloat *testTensor_data = (float*) (env)->GetByteArrayElements(NV21FrameData,0);
__android_log_print(ANDROID_LOG_INFO, "Torchandroid", "C test print: %f",(testTensor_data[0]));
这第二种方法不起作用。问题是,简单地打印出一个浮点数对我没有用。我需要将它用作浮点数并将其作为浮点数进行操作,这是第二种方法,但它不起作用。