在 Nashorn 中将 byte[] 转换为 ArrayBuffer
Converting byte[] to ArrayBuffer in Nashorn
如何在 Nashorn 中将字节数组转换为 ArrayBuffer
?我正在尝试将二进制数据插入纯 JavaScript 环境(即,它无法访问 Java.from
或 Java.to
),因此想创建一个实例字节。
看来我做错了。将其转换为 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
.
我认为您使用 Uint8Array
是正确的,但此代码可能更可取:
function byteToUint8Array(byteArray) {
var uint8Array = new Uint8Array(byteArray.length);
uint8Array.set(Java.from(byteArray));
return uint8Array;
}
此外,如果您确实需要 ArrayBuffer
,您可以使用 uint8Array.buffer
。
如何在 Nashorn 中将字节数组转换为 ArrayBuffer
?我正在尝试将二进制数据插入纯 JavaScript 环境(即,它无法访问 Java.from
或 Java.to
),因此想创建一个实例字节。
看来我做错了。将其转换为 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
.
我认为您使用 Uint8Array
是正确的,但此代码可能更可取:
function byteToUint8Array(byteArray) {
var uint8Array = new Uint8Array(byteArray.length);
uint8Array.set(Java.from(byteArray));
return uint8Array;
}
此外,如果您确实需要 ArrayBuffer
,您可以使用 uint8Array.buffer
。