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 了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题