怎么把进制串String binary="1000100010110100000011000111000011000011101011001011010011101011100011000111101011100111010111101011000011001001110101100101101111000001011" 转成88 16 81 11 30 30 3a 32 34 3a 38 31 3a 39 35 3a 30 64 3a 32 37 82 01 01
求方法

解决方案 »

  1.   

    java7  有个新特性  可以直接用2进制表示16进制,int i = 0b10001000; 然后i可以直接转成16进制  字符串可以每八位一分解
      

  2.   


    int i=0;
    String binary="1000100010110100000011000111000011000011101011001011010011101011100011000111101011100111010111101011000011001001110101100101101111000001011";
    StringBuffer sb=new StringBuffer();
    while (i<binary.length()-4) {
    String str=binary.substring(i,i+4);
    i+=4;
    sb.append(Integer.toHexString(Integer.valueOf(str)));
    }
    System.out.println(sb.toString());
      

  3.   

    如果从左往右匹配,应该是:public static void main(String[] args) {
    String binary="1000100010110100000011000111000011000011101011001011010011101011100011000111101011100111010111101011000011001001110101100101101111000001011";
    BigInteger b = new BigInteger(binary, 2);
    System.out.println(b.toString(16));
    }
      

  4.   

    上面是从右往左,这个是正常的转换:public static void main(String[] args) {
    String binary="1000100010110100000011000111000011000011101011001011010011101011100011000111101011100111010111101011000011001001110101100101101111000001011";
    StringBuilder result = new StringBuilder();
    for(int i = 0; i <= binary.length() - 4; i = i + 4){
    if(i >= binary.length())
    i = binary.length();
    String tmp = binary.substring(i, i + 4);
    result.append(Integer.toHexString(Integer.parseInt(tmp, 2)));
    }
    System.out.println(result);
    }
      

  5.   

    补0的话可以简单点:
    while (binary.length()%4!=0) binary = "0"+binary; 
    while(!binary.isEmpty()) {
      String bi = binary.substring(0,4);
      ...
      binary = binary.substring(4);
    }