您可以转换为ArrayBuffer
,将数据复制到该缓冲区,然后创建该缓冲区的字节视图:
var data = new Float32Array([0.1, 0.2, 0.3]);
var buffer = new ArrayBuffer(data.byteLength);
var floatView = new Float32Array(buffer).set(data);
var byteView = new Uint8Array(buffer);
此函数可以将任何 TypedArray 转换为任何其他类型的 TypedArray :
function convertTypedArray(src, type) {
var buffer = new ArrayBuffer(src.byteLength);
var baseView = new src.constructor(buffer).set(src);
return new type(buffer);
}
例子 :
convertTypedArray(new Float32Array([0.5, 0.3, -0.1]), Uint8Array);
Edit
正如伊恩在评论部分指出的那样,您可以访问ArrayBuffer
with TypedArray.buffer
,所以你可以简单地执行以下操作:
var byteArray = new Uint8Array(floatArray.buffer);
请注意,执行此操作时,byteArray
and floatArray
将共享相同的缓冲区,因此修改byteArray
将修改floatArray
反之亦然。