Node.js 如何在不复制的情况下将Int32Array强制转换为Uint8Array

Node.js 如何在不复制的情况下将Int32Array强制转换为Uint8Array,node.js,Node.js,我有一个长度为1的Int32Array类型的对象,我希望将其强制转换为长度为4的Uint8Array类型的对象,最好不要复制内存内容。我该怎么做 [更新] 为了更好地解释我的问题,请考虑下面的代码: const view = new DataView(int32array.buffer); const uni8array = new Uint8Array(int32array.length * 4); for (let i=0; i<int32array.length; i++) {

我有一个长度为
1
Int32Array
类型的对象,我希望将其强制转换为长度为
4
Uint8Array
类型的对象,最好不要复制内存内容。我该怎么做

[更新]

为了更好地解释我的问题,请考虑下面的代码:

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);
}
const view=newdataview(int32array.buffer);
const uni8array=新的Uint8Array(int32array.length*4);

对于(让i=0;i我看不到任何方法可以从纯Javascript实现您想要做的事情

如果源模块是创建
uint32数组
的Javascript编码模块,那么您可以编辑源模块,首先创建并填充
Uint8Array
,避免转换问题



另一种可能性是,您可以为
uint32数组
制作自己的包装器,这样您就可以像虚拟的
Uint8Array
一样进行访问,从而隐藏从uint32数组中动态获取适当Uint8值的混乱性(无需复制它)然后只需使用包装器方法对其进行代码访问。

也许可以创建一个提供不同接口的接口(包括提取任何uint8值的功能)在你的ArrayBuffer对象上。@jfriend00谢谢。我已经研究过了。只是
DataView
一次只能读取一个元素的数据。我希望找到一种方法来强制转换整个数组而不复制。那么你真正想做什么?请描述整个问题。为什么你要开始复制首先是Int32Array,以及为什么您希望在Uint8Array中使用相同的数据而不进行复制。现在,您的问题是XY问题,您在这里要求的是特定的解决方案,而没有描述真正的问题,因此我们无法看到整个问题,也无法提供您甚至没有想到的东西。@jfriend00我更新了问题。我试图解决的问题是,我有两个库。一个输出
Int32Array
,另一个需要
Uint8Array
。数据是相同的,只有它们的类型是问题所在。我看不到任何方法可以从纯Javascript中执行您试图执行的操作。如果这是创建Uint32的Javascript编码模块数组,也许您可以首先编辑源模块以创建和填充Uint8Array。@mehran-我添加了一个注释,说明如何在UInt32数组周围创建一个包装器,从而提供类似Uint8Array的接口。