将无符号字节设置为ArrayBuffer

时间:2018-08-26 19:09:34

标签: javascript dataview arraybuffer

我知道你可以做

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?

1 个答案:

答案 0 :(得分:0)

我认为您缺少的重要一点是DataView只是一个View。因此,当您执行dataView.setUint8(1, 4)时,您要做修改了bufferdataView本身不保存数据,仅保存对缓冲区的引用。因此,您的代码已经可以满足您的要求。要获取它的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 ]