如何在 Java 中将二进制字符串转换为以 10 为底的整数

新手上路,请多包涵

我有一个字符串数组,代表二进制数(没有前导零),我想将其转换为相应的以 10 为基数的数字。考虑:

 binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary   11 becomes integer 3   etc.

最好的方法是什么?我一直在探索 java.lang.number.* 而没有找到直接的转换方法。 Integer.parseInt(b) 产生一个等于字符串的整数…例如,1001 变成 1,001 而不是 9…并且似乎不包含输出基数的参数。 toBinaryString 转换方向错误。我怀疑我需要进行多步转换,但似乎无法找到方法或子类的正确组合。我也不确定前导零或缺少前导零在多大程度上会成为一个问题。任何人有什么好的方向可以指点我吗?

原文由 dwwilson66 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 623
2 个回答

您需要 指定基数Integer#parseInt() 的重载允许您这样做。

 int foo = Integer.parseInt("1001", 2);

原文由 Matt Ball 发布,翻译遵循 CC BY-SA 3.0 许可协议

这可能有效:

 public int binaryToInteger(String binary) {
    char[] numbers = binary.toCharArray();
    int result = 0;
    for(int i=numbers.length - 1; i>=0; i--)
        if(numbers[i]=='1')
            result += Math.pow(2, (numbers.length-i - 1));
    return result;
}

原文由 user377628 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题