How to convert a Binary String to a base 10 integer in Java

前端 未结 9 1332
野性不改
野性不改 2020-11-27 14:30

I have an array of Strings that represent Binary numbers (without leading zeroes) that I want to convert to their corresponding base 10 numbers. Consider:

bi         


        
9条回答
  •  北海茫月
    2020-11-27 15:29

    I love loops! Yay!

    String myString = "1001001"; //73
    

    While loop with accumulator, left to right (l doesn't change):

    int n = 0,
        j = -1,
        l = myString.length();
    while (++j < l) n = (n << 1) + (myString.charAt(j) == '0' ? 0 : 1);
    return n;
    

    Right to left with 2 loop vars, inspired by Convert boolean to int in Java (absolutely horrible):

    int n = 0,
        j = myString.length,
        i = 1;
    while (j-- != 0) n -= (i = i << 1) * new Boolean(myString.charAt(j) == '0').compareTo(true);
    return n >> 1;
    

    A somewhat more reasonable implementation:

    int n = 0,
        j = myString.length(),
        i = 1;
    while (j-- != 0) n += (i = i << 1) * (myString.charAt(j) == '0' ? 0 : 1);
    return n >> 1;
    

    A readable version :p

    int n = 0;
    for (int j = 0; j < myString.length(); j++) {
        n *= 2;
        n += myString.charAt(j) == '0' ? 0 : 1;
    }
    return n;
    

提交回复
热议问题