You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将由0和1组成的int数组转换为二进制整数?

嘿,这个问题我之前也帮不少人捋过,其实有几种简单又靠谱的实现方式,我给你拆解一下~

方法一:手动位运算构建(通用思路,适配所有语言)

核心逻辑就是把数组里的每个元素当成二进制的一位,逐步构建出整数。从你的例子{0,0,0,0,0,0,0,1}转0b00000001来看,数组的第一个元素是二进制的最高位,最后一个是最低位,那我们可以这么做:

初始化结果为0,遍历数组的每一位:

  1. 把当前结果左移1位(相当于乘以2,腾出位置给下一位)
  2. 用位或操作把当前位的0/1加到结果里

拿Java举个例子:

int[] bits = {0,0,0,0,0,0,0,1};
int result = 0;
for (int bit : bits) {
    result = (result << 1) | bit;
}
// 如果要输出带0b前缀的8位二进制字符串
System.out.println("0b" + String.format("%8s", Integer.toBinaryString(result)).replace(' ', '0'));

要是你用Python,逻辑完全一样:

bits = [0,0,0,0,0,0,0,1]
result = 0
for bit in bits:
    result = (result << 1) | bit
# 格式化输出补零的8位二进制
print(f"0b{format(result, '08b')}")
方法二:利用语言内置工具(更简洁)

很多语言都有直接解析二进制字符串的工具,我们可以先把数组转成二进制字符串,再转成整数。

Java版本

用流把数组转成字符串,再用Integer.parseInt指定进制为2:

import java.util.Arrays;
import java.util.stream.Collectors;

public class BitArrayToInt {
    public static void main(String[] args) {
        int[] bits = {0,0,0,0,0,0,0,1};
        // 把数组拼接成二进制字符串
        String bitStr = Arrays.stream(bits)
                              .mapToObj(String::valueOf)
                              .collect(Collectors.joining());
        // 转成整数
        int num = Integer.parseInt(bitStr, 2);
        // 输出带前缀的结果
        System.out.println("0b" + bitStr);
    }
}

如果你的数组长度超过32位(int的最大位数),记得换成Long.parseLong或者BigInteger来避免溢出。

Python版本

Python的写法就更简洁了:

bits = [0,0,0,0,0,0,0,1]
# 数组转二进制字符串
bit_str = ''.join(str(bit) for bit in bits)
# 转成整数
num = int(bit_str, 2)
# 直接输出带前缀的字符串
print(f"0b{bit_str}")
注意事项
  • 一定要确认数组的位序:如果你的数组是低位在前(比如第一个元素是二进制的最低位),那就要倒序遍历数组再进行计算。
  • 处理长数组时要注意整数溢出问题:比如Java的int只能存32位二进制,超过的话要用更大的类型;Python的int没有位数限制,不用担心这个问题。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:42:50