几天前我发布了几个关于这个的问题,并得到了一些很好的回复JavaScript Typed Arrays - Different Views
我的第二个问题涉及两个视图,8 位数组和 32 位缓冲区数组。通过在 8 位中放置 0、1、2、3,我在 32 位中得到了 50462976。如前所述,32 位值的原因得到了很好的解释。
我可以使用以下代码实现相同的目的:
var buf = new ArrayBuffer(4);
var arr8 = new Int8Array(buf);
var arr32 = new Int32Array(buf);
for (var x = 0; x < buf.byteLength; x++) {
arr8[x] =
(x << 24) |
(x << 16) |
(x << 8) |
x;
}
console.log(arr8); // [0, 1, 2, 3]
console.log(arr32); // [50462976]
我找不到任何解释这个过程的机制的东西。似乎是说每个 arr8 元素等于 X 位移位 24 位或位移位 16 位或位移位 8 位或未位移位。
这对我来说真的没有意义。如果有人能对此有所了解,我将不胜感激。谢谢,