在Nashorn中将byte[]转换为ArrayBuffer

4

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

2个回答

6
看起来我一直都走错了方向。把它转换成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

3

我认为您关于使用Uint8Array的想法是正确的,但下面这段代码可能更好:

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

此外,如果你确实需要一个ArrayBuffer,你可以使用uint8Array.buffer

很遗憾,我无法使用Java.from,因为我在Nashorn中处于纯JavaScript环境。但是你的答案仍然很有帮助。 - Vivin Paliath
Java未定义,但uint8Array.buffer对我很有帮助,谢谢! - Mehdi Souregi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接