在android/java中,我们使用 ByteBuffer
我可以打电话给你 putFloat()
. 我想通过考试 ByteBuffer
我不知道如何正确地存储 float
价值观。我已经有一段时间没用c++了。。。
android存储 float
在 ByteBuffer
:
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.0
至 1.0
. 我想问题是当我宣布 dstBuffer
它需要被创建为其他可以存储浮动的东西。
暂无答案!
目前还没有任何答案,快来回答吧!