如何将位数组作为字符串转换为 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);
假设我有一个包含 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);