赞
踩
- const buffer = new ArrayBuffer(5);
-
- const view = new DataView(buffer);
- view.setInt32(1, 2147483647);
-
- console.log(view.getInt32(0)); //8388607
- console.log(view.getInt32(1)); //2147483647
- console.log(view.getInt32(2)); //Offset is outside the bounds of the DataView
-
-
- 共有5个字节
- setInt32 4个字节来存储一个数据
- 看一下在第一个字节位置存储的二进制数据
- const a = 2147483647;
- a.toString(2); //'1111111111111111111111111111111'
-
- 5个字节二进制数据存储视图如下:
- 每个字节有八个存储单元;
- 索引0 索引1 索引2 索引3 索引4
- 00000000 011111111 11111111 11111111 00000000
-
- view.getInt32(0) 得到十进制数据8388607,那么它是怎么得来的呢?
- 从第一个字节(索引0)的位置,取4个字节,也就是索引0-3的数据;
- 二进制转十进制
- parseInt("11111111111111111111111",2) //8388607
-
- view.getInt32(2))就会报错 "Offset is outside the bounds of the DataView";
-
- 从第一个字节(索引2)的位置,取4个字节,存储视图中少了一个字节,偏移量超出DataView的界限;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。