我有一个数据数组(从缓冲区分割)Int16Array[326784],其值类似于[579, 578, 576, 574, 570, ...]

当我运行b = new Int16Array(a.buffer, 0, a.length)时,结果为Int16Array[326784],但值不同:[0, 0, ..., 0, 18756, 19779, 2, 0, 19541, 4, ...]

如果我重复转换:c = new Int16Array(b.buffer, 0, b.length)结果与b相同。

为什么第一次转换不同?

最佳答案

它是由于误解TypedArray引起的。

在问题a = Int16Array(bufferA, x, y);中,a仅是缓冲区的视图,a.bufferbufferA

所以b = new Int16Array(a.buffer, 0, a.length)等于b = new Int16Array(bufferA, 0, a.length)

关于javascript - 为什么将Int16Array转换为ArrayBuffer,结果不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40622908/

10-10 01:58