如何将位数组作为字符串转换为 ArrayBuffer

How do I turn an Array of Bits as Strings into an ArrayBuffer

假设我有一个包含 256 个 character/strings 的数组,它们要么是“1”,要么是“0”

所以像

["1","1","0","0","1","0", ...]

我需要在 ArrayBuffer 中转换它(各个位是 SHA-256 哈希)

用数组中的每个填充 32 字节 ArrayBuffer 的最简单方法是什么。

可以用join,把8个位拼在一起,然后用parseInt以2为基数转换成二进制数,然后放到arrayBuffer中。

下面是一个例子。

//lets make some demo data.
const data = new Array(256).fill().map(m => Math.random() < 0.5 ? '1' : '0');

//convert data of '0', '1' into ArrayBuffer
const buffer = new Uint8Array(32);
let bpos = 0;
for (let l = 0; l < data.length; l += 8) {
  const b = data.slice(l, l + 8).join(''); 
  buffer[bpos] = parseInt(b, 2);
  bpos += 1;
}

console.log(buffer);