如何在jni中调用android bytebuffer.putfloat()

deyfvvtc  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(243)

在android/java中,我们使用 ByteBuffer 我可以打电话给你 putFloat() . 我想通过考试 ByteBuffer 我不知道如何正确地存储 float 价值观。我已经有一段时间没用c++了。。。
android存储 floatByteBuffer :

val bb = ByteBuffer.allocateDirect(...)
bb.order(ByteOrder.nativeOrder())
bb.putFloat(1.45f)

在java/kotlin中调用jni方法:

val bb = ByteBuffer.allocateDirect(imageSize * imageSize * 3 * 4)
bb.order(ByteOrder.nativeOrder())

//JNI Method
updateByteBufferWithFloatValues(bb)

jni方法

extern "C" JNIEXPORT void JNICALL
Java_com_sample_test_SampleFragment_updateByteBufferWithFloatValues(
    JNIEnv* env,
    jobject /* this */,
    jobject dstBB) {

jbyte* dstBuffer = (jbyte*)(*env).GetDirectBufferAddress(dstBB);

int bufferPos = 0;

//Other logic

dstBuffer[bufferPos] = 1.45f;
bufferPos++;

//Other logic

}

浮点值需要在 -1.01.0 . 我想问题是当我宣布 dstBuffer 它需要被创建为其他可以存储浮动的东西。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题