【问题标题】:How to pass ByteArray as parameter to function using J2V8如何使用 J2V8 将 ByteArray 作为参数传递给函数
【发布时间】:2020-02-26 23:01:50
【问题描述】:

我正在尝试使用 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)
}

【问题讨论】:

    标签: javascript kotlin j2v8


    【解决方案1】:

    作为一个临时解决方案,虽然很幼稚,但我将字节数组转换为逗号分隔的数字字符串,然后在 js 中将它们分隔为字节数组。粗略地传递的数据的大小增加了多倍。但现在这行得通,我可以继续处理其他所有事情。

    【讨论】:

      【解决方案2】:

      试试这个:

      var buffer = V8ArrayBuffer(bytes, bytes.size)
      var v8Array = V8TypedArray(v8, bytes, V8Value.BYTE, 0, 2)
      V8Array(v8).add("v8Array", v8Array)
      

      ...
      V8Array(v8).push( v8Array)
      

      【讨论】:

      • V8ArrayBuffer 没有占用字节的构造函数。
      • 另外,您正在将 v8Array 添加到 v8Array。
      猜你喜欢
      • 2016-09-22
      • 2013-01-27
      • 2020-12-18
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      相关资源
      最近更新 更多