/*程序功能,十进制转换为十六进制,先将十进制转换为二进制,再按每4个二进制对整数进行移位和去高位处理,得到的结果就是十六进制数的一位*/
public  class Ten2
{      
    public static void main (String []   args) 
    {         
Ten2 ten2 = new Ten2();
         String str= "";
         int num=1234;
         str = ten2.toTwo(num);
         ten2.toHexStringOne(str);
     }     static String  toTwo (int num)
     {          
                 int len=0;
                 int LEN = 16;
                 int [] two=new int[LEN];
                 if(num > 65535 || (0-num) > 65535)
                {
                             LEN = 32;
                }
              
                do
                {
                       two[LEN-1-len] = (int)(num%2);
                    len++;
                    num = (int)(num/2);
                }
                while(num > 0);
                   
               return(String.valueOf(two));
      }
           
             
     public static void toHexStringOne(String dec)
     {   
    int pos=32;
    char[] buf=new char[32];
    int num = Integer.parseInt(dec);
                      
   do
   {
                 buf[--pos]=charArr[num&15];
                 num=num>>>4;
   }
  while(num!=0);
                
 for(int i=0;i<buf.length; i++)
 {
                 System.out.println(buf[i]);
 }
                
     }
 }

解决方案 »

  1.   

    好象有系统函数可以直接把二进制转换成16进帛的。
    java.lang.Integer的static String toHexString(int i) 方法就可以将10进制的数转换成16进制的,你直接调方法就可以了。不用你自己去写。
      

  2.   

    不好意思,重传一下 编译通过
    import  java.lang.String;
    import java.lang.Integer.*;public  class Ten2
    {          private static final char charArr[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; 
    public static void main (String []   args) //throws Exception  

    Ten2 ten2 = new Ten2();
    String str= "";
    int num=1234;
    str = ten2.toTwo(num);
    ten2.toHexStringOne(str);
    }static String  toTwo (int num)
    {
            
                                        int len=0;
    int LEN = 16;
    int [] two=new int[LEN];
    if(num > 65535 || (0-num) > 65535)
    {
    LEN = 32;
    }

       do
        {
         two[LEN-1-len] = (int)(num%2);
         len++;
                  num = (int)(num/2);
        }
        while(num > 0);
        
       return(String.valueOf(two));
    }
      public static void toHexStringOne(String dec)
    {   
               int pos=32;
                char[] buf=new char[32];
                int num = Integer.parseInt(dec);
                
               do
               {
                   buf[--pos]=charArr[num&15];
                   num=num>>>4;
               }
               while(num!=0);
              
               for(int i=0;i<buf.length; i++)
               {
               System.out.println(buf[i]);
                 }

    }
    }
      

  3.   

    问题在
    static String  toTwo (int num)
    {
        ...
        return(String.valueOf(two));
    }
    的返回值上,String.valueOf()不接受数组参数,你的two分明就是一个数组嘛。