用惯了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的最大值。