为什么 Int16Array 到 ArrayBuffer 转换回 Int16Array,结果不同?
Why Int16Array to ArrayBuffer convert back Int16Array, result is different?
我有一个数据数组(从缓冲区拆分)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只是buffer的视图,a.buffer
是bufferA
。
所以b = new Int16Array(a.buffer, 0, a.length)
等于b = new Int16Array(bufferA, 0, a.length)
我有一个数据数组(从缓冲区拆分)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只是buffer的视图,a.buffer
是bufferA
。
所以b = new Int16Array(a.buffer, 0, a.length)
等于b = new Int16Array(bufferA, 0, a.length)