解决方案 »

  1.   

    import java.util.Scanner;
    public class Binary2Hex {
    private static String hexStr =  "0123456789ABCDEF"; 
    /** 
         *  
         * @param bytes 
         * @return 将二进制转换为十六进制字符输出 
         */  
        public static String BinaryToHexString(byte[] bytes){  
            String result = "";  
            String hex = "";  
            for(int i=0;i<bytes.length;i++){  
                //字节高4位  
                hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));  
                //字节低4位  
                hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));  
                result +=hex;  
            }  
            return result;  
        }  
     
     public static void main(String[] args) {
    Scanner sca = new Scanner(System.in);
    boolean flag = true;
    while (flag) {
    System.out.print("请输入一个二进制字符串:");
    String str = sca.next();
    System.out.println();
    System.out.println("您输入的是字符串的十六进制为:"+BinaryToHexString(str.getBytes()));
    System.out.print("是否继续转化(如果不继续请输入“exit”,继续的话输入任意字符):");
    String _str = sca.next();
    if (_str.equalsIgnoreCase("exit")) {
    flag = false;
    }
    }
    }
    }
      

  2.   

    另外,Java提供了进制转换函数:Integer.toString(int i, int radix)
    这个方法可以用来转换进制
      

  3.   

    写写的你回复,受益匪浅,
    但是我还想知道我的那段代码乱码输出的这个是怎么回事?
    The hexdecimal value is [C@e66f56
      

  4.   

    代码中的num.toString()的返回值就是你所谓的乱码,因为num是数组,除非覆盖默认的toString方法,否则返回的是getClass().getName() + "@" + Integer.toHexString(hashcode());