在 JavaScript 中将二进制数组转换为对应的整数


假设我们有一个包含 0 和 1 的数字数组:

const arr = [0, 1, 0, 1];

我们需要编写一个数组函数 `toBinary()`,它返回与其一起使用的数组对应的二进制数。

例如:

const arr = [1, 0, 1, 1];

则输出应为 11,因为二进制 1011 的十进制表示为 11。

因此,让我们编写此函数的代码。

方法一:使用库方法

在 JavaScript 中,存在一个 `parseInt()` 方法,它接受两个参数,第一个是字符串,第二个是表示特定基数的数字,例如 10 表示十进制基数,2 表示二进制基数。此函数解析字符串参数并返回指定基数 (基数) 的整数。

在我们的例子中,要将二进制数组转换为十进制,我们可以像这样使用 `parseInt()` 函数:

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   const binaryString = arr.join("");
   return parseInt(binaryString, 2);
};
console.log(parseArray(arr));

方法二:数组化简

在这种方法中,我们迭代二进制数组并根据相应的二进制数构造十进制数。我们将使用左移运算符 (<<) 将累积值每次左移一位,并返回移位的累积值和当前值的按位或 (|)。

使用位运算符的代码:

示例

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   return arr.reduce((acc, val) => {
      return (acc << 1) | val;
   });
};
console.log(parseArray(arr));

输出

控制台中的输出将是:

11

更新于:2020-08-26

5K+ 次浏览

启动你的 职业生涯

完成课程获得认证

开始学习
广告