【问题标题】:Converting byte[] to ArrayBuffer in Nashorn在 Nashorn 中将 byte[] 转换为 ArrayBuffer
【发布时间】:2016-01-15 21:46:11
【问题描述】:

如何在 Nashorn 中将字节数组转换为 ArrayBuffer?我正在尝试将二进制数据插入到纯 JavaScript 环境中(即,它无法访问 Java.fromJava.to),因此想从字节数组中创建一个实例。

【问题讨论】:

    标签: javascript java nashorn


    【解决方案1】:

    看来我做错了。将其转换为 Uint8Array 更有意义,因为我在 中发送的是 字节数组。

    我创建了以下函数:

    function byteToUint8Array(byteArray) {
        var uint8Array = new Uint8Array(byteArray.length);
        for(var i = 0; i < uint8Array.length; i++) {
            uint8Array[i] = byteArray[i];
        }
    
        return uint8Array;
    }
    

    这会将字节数组(因此byteArray 实际上是byte[] 类型)转换为Uint8Array

    【讨论】:

      【解决方案2】:

      我认为您使用 Uint8Array 是对的,但此代码可能更可取:

      function byteToUint8Array(byteArray) {
          var uint8Array = new Uint8Array(byteArray.length);
          uint8Array.set(Java.from(byteArray));
          return uint8Array;
      }
      

      另外,如果你真的需要ArrayBuffer,你可以使用uint8Array.buffer

      【讨论】:

      • 很遗憾,我无法使用Java.from,因为我在 Nashorn 的纯 JavaScript 环境中。但是你的回答还是有帮助的。
      • Java未定义,但uint8Array.buffer帮了我很多,谢谢!
      猜你喜欢
      • 2023-02-08
      • 2011-06-08
      • 2015-09-22
      • 2011-11-25
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多