如何用另一种数组类型读取类型化数组
How to read typed array with another arrays type
我在一个函数中,array1
和 array2
是类型化数组的参数,其中任何一个:Uint32Array
或 Int32Array
或 Float64Array
或Uint8Array
在此函数中,如何将 array1
原始数据转换为等于 array2
type
的类型化数组
像这样:
function readArray(array1, array2)
{
var a = new array2Type(array1.buffer);
//rest of the code where "a" is used
}
array2Type
不是有效代码,正确的转换方法是什么?
您可以根据源创建一个新的类型化数组视图:
var dstArray = new window[srcArray.constructor.name](srcArray.buffer);
在函数中实现:
function readArray(array1, array2) {
var a = new window[array2.constructor.name](array1.buffer);
console.log(a.constructor.name);
}
var a1 = new Uint32Array(1);
var a2 = new Float32Array(1);
readArray(a1, a2); //Should log Float32Array
但是您需要添加一些清理,例如 Uint32Array
至少需要四个字节,如果您传入长度为 1 Uint16Array
它将失败,因为只有两个字节。等等。
我在一个函数中,array1
和 array2
是类型化数组的参数,其中任何一个:Uint32Array
或 Int32Array
或 Float64Array
或Uint8Array
在此函数中,如何将 array1
原始数据转换为等于 array2
type
的类型化数组
像这样:
function readArray(array1, array2)
{
var a = new array2Type(array1.buffer);
//rest of the code where "a" is used
}
array2Type
不是有效代码,正确的转换方法是什么?
您可以根据源创建一个新的类型化数组视图:
var dstArray = new window[srcArray.constructor.name](srcArray.buffer);
在函数中实现:
function readArray(array1, array2) {
var a = new window[array2.constructor.name](array1.buffer);
console.log(a.constructor.name);
}
var a1 = new Uint32Array(1);
var a2 = new Float32Array(1);
readArray(a1, a2); //Should log Float32Array
但是您需要添加一些清理,例如 Uint32Array
至少需要四个字节,如果您传入长度为 1 Uint16Array
它将失败,因为只有两个字节。等等。