如何使用 J2V8 将 ByteArray 作为参数传递给函数
How to pass ByteArray as parameter to function using J2V8
我正在尝试使用 Android 上的 J2V8 库来调用 javascript 函数并将参数传递给它。下面的代码是我所拥有的,但无法弄清楚如何将 bytes
ByteArray 传递给被调用的函数。
private fun decodePbfBytes(bytes: ByteArray?){
val params = arrayOf(bytes)
val v8 = V8.createV8Runtime()
var v8Array = V8Array(v8) //how do I add bytes to this?
val fileContents = MyApp.sharedInstance.assets.open("pbfIndex.js").bufferedReader().use { it.readText() }
v8.executeScript(fileContents)
val result = v8.executeStringFunction("", v8Array)
}
试试这个:
var buffer = V8ArrayBuffer(bytes, bytes.size)
var v8Array = V8TypedArray(v8, bytes, V8Value.BYTE, 0, 2)
V8Array(v8).add("v8Array", v8Array)
或
...
V8Array(v8).push( v8Array)
作为临时解决方案,虽然很幼稚,但我将字节数组转换为一串逗号分隔的数字,然后在js中将它们分隔成字节数组。粗略地,传递的数据的大小增加了多倍。但现在这行得通,我可以继续处理其他所有事情。
我正在尝试使用 Android 上的 J2V8 库来调用 javascript 函数并将参数传递给它。下面的代码是我所拥有的,但无法弄清楚如何将 bytes
ByteArray 传递给被调用的函数。
private fun decodePbfBytes(bytes: ByteArray?){
val params = arrayOf(bytes)
val v8 = V8.createV8Runtime()
var v8Array = V8Array(v8) //how do I add bytes to this?
val fileContents = MyApp.sharedInstance.assets.open("pbfIndex.js").bufferedReader().use { it.readText() }
v8.executeScript(fileContents)
val result = v8.executeStringFunction("", v8Array)
}
试试这个:
var buffer = V8ArrayBuffer(bytes, bytes.size)
var v8Array = V8TypedArray(v8, bytes, V8Value.BYTE, 0, 2)
V8Array(v8).add("v8Array", v8Array)
或
...
V8Array(v8).push( v8Array)
作为临时解决方案,虽然很幼稚,但我将字节数组转换为一串逗号分隔的数字,然后在js中将它们分隔成字节数组。粗略地,传递的数据的大小增加了多倍。但现在这行得通,我可以继续处理其他所有事情。