gpt4 book ai didi

java - 如何将 C++ 中的 double 转换为 Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:41 24 4
gpt4 key购买 nike

我有一个关于数据类型的问题,我想在开始编码之前弄清楚它!假设我在 C++ 中有一个方法可以返回一个数组或一个 double 缓冲区。然后我需要使用 JNI header 将此 double[] 转换为 jdouble,以便 Java 可以处理数据。

我的第一个问题是我应该配置我的 C++ 方法以返回 double 组还是 double 缓冲区。我知道它们几乎相同,但不知道哪个更好。另外,如何以 Java 可以理解的方式转换缓冲区?

这是我目前所拥有的:

JNIEXPORT jdouble[] JNICALL Java_Test_getDouble[](JNIEnv *env, jobject obj) 
{
double[] temp= new double[someSize];
temp = // call my C++ code

jdouble result = new jdouble[someSize];
for(i = 0; i < someSize; i++)
converting double in temp to jdouble in result;

return result;
}

然后 Java 可以对数据做任何它想做的事。

我的代码是否有意义?我读了一些关于 ByteGetElement() 的帖子,但我不知道它是否可以在这里应用。如果您能提供一个简单的示例,那将非常有帮助。最终,我仍然需要知道我应该使用 double 组还是缓冲区。

非常感谢。

最佳答案

就 C 而言,jdouble 实际上与 double 相同。

// just for the sake of the example  this buffer exists and holds the double values in C
double* sourceBuffer;

// allocate the jdouble Array
jdoubleArray output = (*env)->NewdoubleArray(env, someSize);

// check if it was allocated correctly
if (NULL == output) return NULL;

// commit the contents of the double* array (sourceBuffer in this example) into the Java array
(*env)->SetDoubleArrayRegion(env, result, 0, someSize, sourceBuffer);
return result;

关于java - 如何将 C++ 中的 double 转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039612/

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