Javascript 将无符号字节设置为ArrayBuffer

Javascript 将无符号字节设置为ArrayBuffer,javascript,dataview,arraybuffer,Javascript,Dataview,Arraybuffer,我知道你能做到 const buffer = new ArrayBuffer(16); const dataView = new DataView(buffer); dataView.setUint8(1, 4) console.log(dataView.getUint8(1)); // 1 但是,我想在数据视图减速行之前设置一个无符号字节,因此在没有访问数据视图的情况下可以这样做吗?因此,如果可能的话,可以在数组缓冲区的字节偏移量1处设置一个4的无符号字节,而不是使用dataView.set

我知道你能做到

const buffer = new ArrayBuffer(16);
const dataView = new DataView(buffer);
dataView.setUint8(1, 4)
console.log(dataView.getUint8(1)); // 1
但是,我想在
数据视图
减速行之前设置一个无符号字节,因此在没有访问
数据视图
的情况下可以这样做吗?因此,如果可能的话,可以在数组缓冲区的字节偏移量
1
处设置一个
4
的无符号字节,而不是使用
dataView.setUint8(1,4)


或者将DataView转换为ArrayBuffer?

我认为您缺少的重要一点是,
DataView
只是一个视图您确实修改了
缓冲区
数据视图
本身并不保存数据,只是对缓冲区的引用。因此,您的代码已经完成了所需的操作。要获取其数组缓冲区,只需使用原始缓冲区:

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 ]

你对
dataView.setUint8(1,4)
有什么问题?@Thomas我不一定有任何问题,我只需要一个ArrayBuffer而不是dataView,所以我意识到可能有其他解决方案,所以我编辑了我的问题。