明净

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
const buffer = new ArrayBuffer(16);
const int32View = new Int32Array(buffer);

for (let i = 0; i < int32View.length; i++) {
  int32View[i] = i * 2;
}

上面代码生成一个 16 字节的ArrayBuffer对象,然后在它的基础上,建立了一个 32 位整数的视图。由于每个 32 位整数占据 4 个字节,所以一共可以写入 4 个整数,依次为 0,2,4,6。

 在栈中是这样的

	6	15	00000000 
		14	00000000 
		13	00000000 
		12	00000110
4 11 00000000 10 00000000 9 00000000 8 00000100
2 7 00000000 6 00000000 5 00000000 4 00000010
0 3 00000000 2 00000000 1 00000000 0 00000000

 如果在这段数据上接着建立一个 16 位整数的视图,则可以读出完全不一样的结果。

 

const int16View = new Int16Array(buffer);

for (let i = 0; i < int16View.length; i++) {
  console.log("Entry " + i + ": " + int16View[i]);
}
// Entry 0: 0
// Entry 1: 0
// Entry 2: 2
// Entry 3: 0
// Entry 4: 4
// Entry 5: 0
// Entry 6: 6
// Entry 7: 0

在栈中是这样的

	0	15	00000000 
		14	00000000 
		
	6	13	00000000 
		12	00000110
		
	0	11	00000000 
		10	00000000 
		
	4	9	00000000 
		8	00000100
		
	0	7	00000000 
		6	00000000 
		
	2	5	00000000 
		4	00000010
		
	0	3	00000000 
		2	00000000 
		
	0	1	00000000 
		0	00000000

  

 

posted on 2021-05-04 18:12  明净  阅读(174)  评论(0编辑  收藏  举报