用惯了python,转到java发现居然没有好的转换工具,只好自己实现一把。

具体思路是:先将字符串转换为字符数组,遍历字符数组,将字符数组的值减去48,加上累计值,然后位移1位

public class BinStrToOct {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String bin="100000000000000000000000000101001010010100";
        System.out.println(binToOct(bin));

    }
    
    static long binToOct(String bin){
        long total=0;
        char [] binCharArray=bin.toCharArray();
        for (int i = 0; i < binCharArray.length; i++) {
            total=total+binCharArray[i]-48;
            if(i!=binCharArray.length-1){
                total=total<<1;
            }
        }
        return total;
    }

}

后话,我发现使用位运算的好处是突破了long的最大值。