const buf = new ArrayBuffer(2);
const view = new DataView(buf);
// 说明整个缓冲确实所有二进制位都是 0
// 检查第一个和第二个字符
alert(view.getInt8(0)); // 0
alert(view.getInt8(1)); // 0
// 检查整个缓冲
alert(view.getInt16(0)); // 0
let buf=new ArrayBuffer(8);
let view=new DataView(buf,0,8);
console.log(view.getInt16(0)); //0
console.log(view.getInt16(3)); //0
console.log(view.getInt16(4)); //0
int16两位字节,getInt16(4)应该超出边界了,为什么还会输出0
还是我理解错了
getInt16(4) 的 4 是
byteOffset
,你这个 DataView 的byteLength
是 8,它才 4,怎么会越界?它跟你要取得是 Int8、Int16 还是 Int32 没有关系,你是不是理解成 4 * 16 / 8 = 8 了?