如何在JNI中从GetDirectBufferAddress调用多种数据类型?

如何在JNI中从GetDirectBufferAddress调用多种数据类型?,第1张

如何在JNI中从GetDirectBufferAddress调用多种数据类型?

在您发布的代码中,您将其称为:

double * rest = (double *)env->GetDirectBufferAddress(bytebuffer + 12);

这会将12加到

bytebuffer
jobject
,而不是数字。

GetDirectBufferAddress()
返回一个地址;由于前3
int
字节各为4个字节,因此我相信您正确地添加了12个字节,但未
在正确的位置添加它

您可能打算这样做:

double * rest = (double *)((char *)env->GetDirectBufferAddress(bytebuffer) + 12);

对于您的总体代码,要获取前三个

int
s和其余的
double
s,请尝试类似以下 *** 作:

void * address = env->GetDirectBufferAddress(bytebuffer);int * firstInt = (int *)address;int * secondInt = (int *)address + 1;int * doubleCount = (int *)address + 2;double * rest = (double *)((char *)address + 3 * sizeof(int));// you said the third int represents the number of doubles followingfor (int i = 0; i < doubleCount; i++) {    double d = *rest + i; // or rest[i]    // do something with the d double}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5601508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存