我有两个长度为32字节的Uint8Array,我想将它们合并为一个长度为64的Uint8Array。
所以我的问题是:
是否有一种方法可以将两个TypedArray合并到AssemblyScript中相同类型的新TypedArray。
我想我正在寻找与JavaScript中的TypedArray.set()
方法等效的方法:
var c = new Uint8Array(Uint8Array_1.length + Uint8Array_2.length);
c.set(Uint8Array_1);
c.set(Uint8Array_2, Uint8Array_1.length);
欢迎任何提示!
答案 0 :(得分:1)
当前TypedArray.set
尚未实现,但您仍然可以使用变体:
版本1(JavaScript方式):
var a: Int8Array = ...
var b: Int8Array = ...
var alen = a.length;
var blen = b.length;
var c = new Int8Array(alen + blen);
for (let i = 0; i < alen; i++) {
unchecked(c[i] = a[i]);
}
for (let i = 0; i < blen; i++) {
unchecked(c[i + alen] = b[i]);
}
版本2(AssemblyScript方式):
var a: Int8Array = ...
var b: Int8Array = ...
var alen = a.length;
var blen = b.length;
var c = new Int8Array(alen + blen);
var aPtr = a.dataStart;
var bPtr = b.dataStart;
var cPtr = c.dataStart;
memory.copy(cPtr, aPtr, alen);
memory.copy(cPtr + alen, bPtr, blen);