将二进制数转换为十进制数的方法

时间:2015-10-26 00:19:33

标签: groovy binary

我试着编写一个程序,将二进制数转换为十进制数,但是我遇到了一些错误,我无法弄清楚我哪里出错了。

// Takes exponent from the user and calculates 2 ** exponent
int power2(int exponent) {
    result = 2 ** exponent
    return result
}

// Converts binary number to decimal
int binary2decimal(String binary) {
    result = 0
    count = 0
    for (i = binary.length(); i-- > 0;) {
        int d = Integer.parseInt(binary.charAt(i))
            if (d == 1) {
                result = result + power2(count)
            }
            count ++
    }
    return result
}

binary2decimal("101110")    

2 个答案:

答案 0 :(得分:1)

更改

int d = Integer.parseInt(binary.charAt(i))

int d = Integer.parseInt("${binary[i]}")

它会起作用。

您的另一种实现方式是:

int binary2decimal2(String binary) {
    binary.reverse()
          .toList()
          .indexed()
          .collect { Integer idx, String val -> Integer.parseInt(val) * (2 ** idx)}.sum()
}

答案 1 :(得分:0)

假设您希望获得干净解决方案的最短路径,请使用:

Integer.parseInt(String base2num, int radix),其中radix = 2

请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String,%20int)