首页 > 解决方案 > 如何将 Int32 存储到 ArrayBuffer 中

问题描述

我有一个长度可能会有所不同的 ArrayBuffer,具体取决于其内容,因此我需要从 Array 中的各种索引连续读取和写入不同的数据类型。有没有办法做到这一点,而无需每次都构造一个新的类型数组?

我已经尝试通过为每个值构造新的类型化数组来读取和写入这个 ArrayBuffer,但是分析我的代码会发现使用这种方法会产生很多开销。

const myArray = new ArrayBuffer(0x800) // populated from elsewhere
const readInt32 = (array, index) => {
  const typedArray = new Uint32Array(array, index, 1)
  return typedArray[0]
}
const writeInt32 = (array, index, value) => {
  const typedArray = new Uint32Array(array, index, 1)
  typedArray[0] = value
}

const sourceAddress = readInt32(myArray, 0)
const targetAddress = readInt32(myArray, 4)
const value = readInt32(myArray, sourceAddress)
writeInt32(myArray, targetAddress, value + 1)

从技术上讲,这是可行的,但是对于我正在做的读写量来说,开销太大了。有没有更好的方法来实现readInt32writeInt32

标签: javascriptnode.js

解决方案


推荐阅读