Tag: v8

将ByteBuffer数组从Java / Kotlin传递到C ++ / V8会导致数据不正确

我试图从Kotlin传递byte[]数据到C ++通过V8 ArrayBuffer传递给JavaScript。 在Kotlin: val buffer = buffer.backingStore.asFloatBuffer() val byteBuffer = ByteBuffer.allocate(buffer.capacity() * 4) byteBuffer.asFloatBuffer().put(buffer) 上面的工作如预期,打印正确。 该数组是[1.1, 2.2, 3.3] 。 所以byteBuffer.array()通过JNI传递给C ++被作为jbyteArray接收。 这里是奇怪的地方。 在C ++中,我尝试将其转换为char并将其传递给JavaScript函数引用: char* buffer = (char*) env->GetByteArrayElements(jbuffer, 0); Local<ArrayBuffer> arrayBuffer = v8::ArrayBuffer::New(isolate_, length); memcpy(arrayBuffer->GetContents().Data(), buffer, length); Local<Value> argv[] = { arrayBuffer }; v8::Local<v8::Context> ctx = hce->context_.Get(hce->isolate_); v8::Function *fn = *(_bufferFn->Get(isolate_)); 在JavaScript中,我收到一个正确长度的ArrayBuffer,但是当我从它初始化一个Float32Array时,我得到[-428967904, -427919360, […]