import java.util.*;
//二进制转换为八进制
public class TtoB{
public static void main(String[] args){
String s;
int i,l;
s="0001111110001101110010010000";
i=s.length()%3;
if(i==1)   s="00"+s;
if (i==2)  s="0"+s;
l=s.length()/3;
int[] r=new int[l];
int m=0;
String[] str=new String[]{"000","001","010","011","100","101","110","111"};
for(int j=0;j<s.length();j=j+3) {
String w=s.substring(j,j+3);
for( i=0;i<8;i++)
    if(str[i].equals(w))
    r[m]=i;
    m++;
}
for(i=0;i<m;i++)
System.out.print(r[i]);
}
}

解决方案 »

  1.   

    有个例子,可以参考
    //: Binary2Octal.java
    // Using the bitwise operators
    import java.util.*;public class Binary2Octal {
      public static void main(String[] args) {
       Random rand = new Random();
       int i = rand.nextInt();
       System.out.println("Random int:           "+i);
       System.out.println("Random int to Binary: "+toBinary(i));
       System.out.println("Random int to Octal:  "+toOctal(i));
       System.out.println("Random int to Hex:    "+toHex(i));
      }
      
      static String toBinary(int i){
       return toUnsignedString(i,1);
      }
      static String toOctal(int i){
       return toUnsignedString(i,3);
      }
      static String toHex(int i){
       return toUnsignedString(i,4);
      }
      final static char[] digits = {
    '0' , '1' , '2' , '3' , '4' , '5' ,
    '6' , '7' , '8' , '9' , 'a' , 'b' ,
    'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
    'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
    'o' , 'p' , 'q' , 'r' , 's' , 't' ,
    'u' , 'v' , 'w' , 'x' , 'y' , 'z'
        };
      private static String toUnsignedString(int i, int shift) {
      char[] buf = new char[32];
      int charPos = 32;
      int radix = 1 << shift;
      int mask = radix - 1;
      do {
         buf[--charPos] = digits[i & mask];
         i >>>= shift;
      } while (i != 0);   return new String(buf, charPos, (32 - charPos));
      }
    }
      

  2.   

    for(i=0;i<m;i++)
    System.out.print(r[i]);