我知道你可以做
const buffer = new ArrayBuffer(16);
const dataView = new DataView(buffer);
dataView.setUint8(1, 4)
console.log(dataView.getUint8(1)); // 1
但是,我想在dataView
减速行之前设置一个无符号字节,因此可以在没有访问dataView
的情况下执行此操作,因此,如果可以的话,可以设置一个无符号字节4
在ArrayBuffer的字节偏移量1
处而不是使用dataView.setUint8(1, 4)
?
还是将DataView转换为ArrayBuffer?
答案 0 :(得分:0)
我认为您缺少的重要一点是DataView
只是一个View。因此,当您执行dataView.setUint8(1, 4)
时,您要做修改了buffer
。 dataView
本身不保存数据,仅保存对缓冲区的引用。因此,您的代码已经可以满足您的要求。要获取它的ArrayBuffer,只需使用原始缓冲区即可:
const buffer = new ArrayBuffer(16);
const dataView = new DataView(buffer);
dataView.setUint8(1, 4)
console.log(dataView.getUint8(1)); // 4
console.log(new Uint8Array(buffer)) // [ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]