javascript - 如何将 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)
从技术上讲,这是可行的,但是对于我正在做的读写量来说,开销太大了。有没有更好的方法来实现readInt32
和writeInt32
?
解决方案
推荐阅读
- sass - 如何为伪样式选择器编写 SASS 类
- apache-kafka - 通过 Confluent Kafka Connect 中的 Syslog 连接器将 UDP 提要发布到 Kafka 主题
- html - 单击链接时避免在加载时刷新当前页面
- android - 在卡片视图项目之间显示细线
- c# - 这只能用 c# linq 来完成吗
- arrays - Indexing nested JSON array with strange formatting
- c++ - 为什么似乎通过 std::lock_guard 获得的互斥锁在其作用域后仍会生效一段时间
- vb.net - .NET 事件不可见/无法与 vb6(vba) 一起使用?
- php - 根据 orWhere 语句显示结果
- ruby-on-rails - Rails 在注册期间创建一个用户和一个 belongs_to 模型