我不得不在某一点上这样做:
var bytes = [ 1, 0, 1, 0, 0, 0, 1, 0 ]
var integer = parseInt(bytes.join(''), 2)
但是,我想知道是否有比使用JavaScript更好/更合适的方法,而不是将其转换为字符串并进行解析。除了询问如何将其转换为 integer 之外,我还想知道如何将其转换为 bytearray 。像这样:
var bytes = [ 1, 0, 1, 0, 0, 0, 1, 0 ]
var bytearray = new Uint8Array(bytes)
var integer = bytearray.toInteger()
答案 0 :(得分:1)
将二进制字节数组转换为整数的公式是(伪代码)
let power = 1;
var intVal = 0;
for (i = [interate from lowdigit to highdigit]) {
if (array[i]) intVal += power;
power *= 2;
}
答案 1 :(得分:1)
也许您可以使用reduce(),这将在数组上循环一次(调用join()
时您已经做过的事情,再加上调用parseInt()
的开销)。但是,您的解决方案更短。
var bits = [ 1, 0, 1, 0, 0, 0, 1, 0 ];
var integer = parseInt(bits.join(''), 2);
console.log("Your solution: " + integer);
var int = bits.reduce(
(a, bit, i, arr) => a + (bit ? Math.pow(2, arr.length - i - 1) : 0),
0
);
console.log("My solution: " + int);