在JTextArea中输入"1100001001000100"(这是一个2进制的表达方式,但是在JTextArea中只能输入String字符串吧)
但是我必须要把这个"1100001001000100"转换成值相同的2进制,发送到服务器(这是一个交换机的指令,必须是2进制的)
把"1100001001000100"转换成16进制得到的是c2 44然后在另外一个JTextArea中显示

解决方案 »

  1.   

    System.out.println(Integer.toHexString(Integer.valueOf("1100001001000100",2))) ;c244
    System.out.println(Long.toHexString(Long.valueOf("11000010010001001100001001000100",2))) ;c244c244
      

  2.   

    变成16进制显示很简单~ String a="1100001001000100";
    int b=b.parseInt(a,2);
    String c=Integer.toHexString(b);
            System.out.println(c);
      

  3.   

    这个不行的,长度太短了,我也只这样转换的,int长度不够,当值为110000100100010011000010010001001100001001000100,会出错的
      

  4.   

    刚才回了,竟然没有回上...System.out.println(Long.toHexString(Long.valueOf("11000010010001001100001001000100",2))) ;c244c244
      

  5.   

    那就用
    String a="1100001001000100";
    Long b=Long.parseLong(a,2);
    String c=Long.toHexString(b);
    System.out.println(c);
      

  6.   

    用long可以再加长一倍,
    long b=b.parseLong(a,2);
    String c=Long.toHexString(b);
    再长就不行了,拆了做成数组吧~BigInteger没有这两个方法!
      

  7.   

    试了下长度还是不够,难道要弄成byte[]
      

  8.   


        public static String binaryToHex(String binary) {
         //可以加写判断参数是否有效等的代码
            String hex = "";
            int length = binary.length();
            int first = length % 4;
            int size = length / 4;
            int bin = 0;
            if(first != 0) {
             bin = Integer.valueOf(binary.substring(0, first), 2);
                hex += Integer.toHexString(bin);
            }
            for(int i = 0; i < size; i++) {
                bin = Integer.valueOf(binary.substring(i * 4 + first, i * 4 + 4 + first), 2);
                hex += Integer.toHexString(bin);
            }
         return hex;
        }简单的写了个二进制转16进制数,你可以看看,也可以去优化优化