我有一个Int32Array
长度类型的对象,1
我想将其强制转换为一个Uint8Array
长度类型的对象4
,最好不要复制内存内容。我怎样才能做到这一点?
[更新]
为了更好地解释我的问题,请考虑以下代码:
const view = new DataView(int32array.buffer);
const uni8array = new Uint8Array(int32array.length * 4);
for (let i=0; i<int32array.length; i++) {
uni8array[i*4+0] = view.getUint8(i*4+0);
uni8array[i*4+1] = view.getUint8(i*4+1);
uni8array[i*4+2] = view.getUint8(i*4+2);
uni8array[i*4+3] = view.getUint8(i*4+3);
}
这段代码完全可以完成我想做的事情,但是它将原始数组复制到一个新数组中。我希望有一种方法可以在不复制内存的情况下执行相同的操作。
我看不到任何方法可以通过纯Javascript来完成您想做的事情。
如果源模块是创建的Javascript编码模块,则Uint32Array
也许您可以编辑源模块以首先创建并填充aUint8Array
并避免转换问题。
另一种可能性是,您可以为制作自己的包装器Uint32Array
,从而像虚拟一样访问Uint8Array
,在其中隐藏了从Uint32Array中动态获取适当的Uint8值(无需复制)的麻烦,然后可以使用对其进行代码访问您的包装方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句