首页 > 代码库 > 自己实现10进制转2进制和16进制

自己实现10进制转2进制和16进制

 1 public class Test { 2   3     public static void main(String[] args) { 4         System.out.println(toBinary(9)); 5         System.out.println(toHex(559)); 6         System.out.println(Integer.toBinaryString(9)); 7         System.out.println(Integer.toHexString(559)); 8       /*1001 9         22F10         100111         22f*/12     }13      14     public static String toBinary(int n){15         StringBuilder temp = new StringBuilder();16         while(n/2 >=1 || n%2 == 1){//除2取余, (|| n%2 == 1) 在次为了补上最后一个0或者117             temp.append(n%2);18             n = n/2;19         }20         return temp.reverse().toString();21     }22     /**23      10进制转16进制:24         将给定的十进制整数除以基数16,余数便是等值的16进制的最低位。25         将上一步的商再除以基数16,余数便是等值的16进制数的次低位。26         重复上一步骤,直到最后所得的商等于0为止。各次除得的余数,便是16进制各位的数,最后一次的余数是最高位27      */28     public static String toHex(int n){29         /*思路:除16取余*/       30         StringBuilder temp = new StringBuilder();31         while(n/16 >= 1){32             int aa = n/16;33             int bb = n%16;34             //0123456789 10 11 12 13 14 1535             //0123456789 A  B  C  D  E  F36             String str = "";37             if(bb == 10){38                 str = "A";39             }else if(bb == 11){40                 str = "B";41             }else if(bb == 12){42                 str = "C";43             }else if(bb == 13){44                 str = "D";45             }else if(bb == 14){46                 str = "E";47             }else if(bb == 15){48                 str = "F";49             }else{50                 str = bb+"";51             }52             temp.append(str);53             n = aa;54             if(n/16 < 1){//补上最后一位55                 temp.append(n);56             }57         }58         return temp.reverse().toString();59     }60 }

 

自己实现10进制转2进制和16进制