首页 > 解决方案 > 如何在 JavaScript TypedArray 中存储和检索二进制矩阵?

问题描述

假设我有一个大小为 m × n 的二进制矩阵。每行有 n 位长。我想尽可能有效地存储这个矩阵,同时仍然能够快速检索各个行。特别是我希望能够在检索行后对它们进行按位运算。为此,我使用了 JavaScript TypedArray。

我对解决方案的尝试如下:

  1. 初始化矩阵,使其具有可被 8 整除的列数(例如,通过填充)
  2. 逐行展平矩阵(即并排放置行)
  3. 将每 8 位转换为 8 位整数,返回 8 位整数的平面数组
  4. 初始化缓冲区并将 8 位整数数组存储为 u8int TypedArray

要检索特定行i

  1. 确定构成单行的 8 位整数的数量(因为我确保列数可以被 8 整除,所以这应该是一个整数)。打电话给这个rowLength
  2. 查找第i行的偏移索引,其中rowStartOffset = i*rowLength; rowEndOffset = (i+1)*rowLength-1并切片数组
  3. 将数组中的整数转换回二进制格式
  4. 对更多行重复 0-2,然后对它们进行按位运算

这行得通,但我想知道是否有更好的方法来做到这一点。特别是有没有办法进行按位运算而不必转换回二进制?(目前我通过将整数转换为二进制字符串然后连接来做到这一点)。有没有不使用 TypedArray 的方法?

标签: javascriptmatrixtyped-arrays

解决方案


推荐阅读