. 编写byte[]数组转二进制字符串的方法。(10分)
二进制字符串格式:每个byte用8个字符组成,字符为'0'或'1',例如0xFF的二进制字符串为"11111111";两个byte的二进制字符串之间用空格分隔。
方法定义如下:
    public String bytes2bitString(byte[] bytes)
例如:    byte[] array = {0x00,(byte)0xFF,0xAB};
    String bitStr = bytes2bitString(array);
    System.out.println(bitStr);输出结果为:
00000000 11111111 10101011
注意:禁止使用Integer.toBinarySring(int)方法。
2. 编写二进制字符串转byte[]数组的方法。(30分)
方法定义如下:
    public byte[] bitString2bytes(String bitString)
例如:
    String bitStr = "00111100 11110000"
    byte[] bytes = bitString2bytes(bitStr);
    System.out.println(bytes.length);
    System.out.println(bytes[0]);  //0x3C
    System.out.println(bytes[1]);  //0xF0
输出结果为:
2
60

解决方案 »

  1.   


    static int bytes2int(byte[] b)
    {
             //byte[] b=new byte[]{1,2,3,4};
             int mask=0xff;
             int temp=0;
            int res=0;
            for(int i=0;i<4;i++){
                res<<=8;
                temp=b[i]&mask;
                res|=temp;
            }
           return res;
    }static byte[] int2bytes(int num)
    {
           byte[] b=new byte[4];
           int mask=0xff;
           for(int i=0;i<4;i++){
                b[i]=(byte)(num>>>(24-i*8));
           }
          return b;
    }
    百度到的。。
      

  2.   

    jdk源码已经开放,自己看看Integer.toBinarySring(int)方法
      

  3.   


     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));
        }
      

  4.   


    public static String bytes2bitString(byte[] bytes) {
    StringBuffer sb = new StringBuffer();
    sb.append("");
    for (int i = 0; i < bytes.length; i++) {
    int bInfo = bytes[i];
    for(int j =0;j<8;j++){
    int iByte = (bInfo >> (7 - j % 8) * 4) & 0x01;
    sb.append(iByte);
    }
    sb.append(" ");
    }
    return sb.toString();
    }
      

  5.   

     新年第一帖  还是把代码给你吧    不晓得你会结贴不??  会的话 给我分吧
    public class BinaryStringChange {
      private static char[]digit={'0','1'};
      public String bytes2bitString(byte[]bytes){
      StringBuffer sb=new StringBuffer();
      for(int i=0;i<bytes.length;i++){
      int byteLength=8;
      char[]ch=new char[byteLength];
      while(byteLength>0){
      byteLength--;
      ch[byteLength]=digit[bytes[i]&0x01];
      bytes[i]>>>=1;
      }
     sb.append(new String(ch)).append(" ");
      }
      return sb.toString();
      } 
      public byte[] bitString2bytes(String bitString){
      String s[]=bitString.split(" ");
      byte[] bytes=new byte[s.length];
      for(int i=0;i<s.length;i++){
      int buffer=0;
      int doubleIt=1;
      for(int j=s[i].length()-1;j>=0;j--){
      int digit=Integer.parseInt(new Character(s[i].charAt(j)).toString());
      buffer+=digit*doubleIt;
      doubleIt=doubleIt<<1;
      }
      bytes[i]=(byte)buffer;
      }
      return bytes;
      }
      public static void main(String... args){
     byte[] array = {(byte)0x00,(byte)0xFF,(byte)0xAB}; 
     String bitStr = "00111100 11110000" ;
     BinaryStringChange bsc=new BinaryStringChange();
     System.out.println(bsc.bytes2bitString(array));
     byte[] result=bsc.bitString2bytes(bitStr);
     for(int i=0;i<result.length;i++){
     System.out.println(result[i]);
     }
      }
    }
      

  6.   

    这java源代码我有的,可是我觉得这次面试后面的题都比较简单的,分数也比这多很多,第一题不应该写源码这样难度的代码(段时间很难写出来),我把分给1楼吧。确实不错。