js DataView问题

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
还是我理解错了

阅读 2k
1 个回答

getInt16(4) 的 4 是 byteOffset,你这个 DataView 的 byteLength 是 8,它才 4,怎么会越界?

它跟你要取得是 Int8、Int16 还是 Int32 没有关系,你是不是理解成 4 * 16 / 8 = 8 了?

推荐问题