1 package com.xxx.transfer;
 2
 3 /**
 4  * 数字进制相互转换
 5  * @see JDK中提供了这些功能
 6  * @author le.li
 7  *
 8  */
 9 public class NumberUtil {
10     public static void main(String[] args) {
11         // 通过X的n次方相加的方式,将二进制转换成十进制
12         System.out.println(binary2Decimal("1001"));
13         // 通过取余数的方式,将十进制转成二进制
14         System.out.println(decimal2Binary(9));
15
16         // jdk中二进制转十进制方式
17         System.out.println(Integer.parseInt("1001", 2));
18         // jdk中十进制转二进制方式
19         System.out.println(Integer.toBinaryString(9));
20         System.out.println(Integer.toString(9, 2));
21     }
22
23     /**
24      * 二进制转十进制
25      * @param number
26      * @return
27      */
28     public static int binary2Decimal(String number) {
29         return scale2Decimal(number, 2);
30     }
31
32     /**
33      * 其他进制转十进制
34      * @param number
35      * @return
36      */
37     public static int scale2Decimal(String number, int scale) {
38         checkNumber(number);
39         if (2 > scale || scale > 32) {
40             throw new IllegalArgumentException("scale is not in range");
41         }
42         // 不同其他进制转十进制,修改这里即可
43         int total = 0;
44         String[] ch = number.split("");
45         int chLength = ch.length;
46         for (int i = 0; i < chLength; i++) {
47             total += Integer.valueOf(ch[i]) * Math.pow(scale, chLength - 1 - i);
48         }
49         return total;
50
51     }
52
53     /**
54      * 二进制转十进制
55      * @param number
56      * @return
57      */
58     public static String decimal2Binary(int number) {
59         return decimal2Scale(number, 2);
60     }
61
62     /**
63      * 十进制转其他进制
64      * @param number
65      * @param scale
66      * @return
67      */
68     public static String decimal2Scale(int number, int scale) {
69         if (2 > scale || scale > 32) {
70             throw new IllegalArgumentException("scale is not in range");
71         }
72         String result = "";
73         while (0 != number) {
74             result = number % scale + result;
75             number = number / scale;
76         }
77
78         return result;
79     }
80
81     public static void checkNumber(String number) {
82         String regexp = "^\\d+$";
83         if (null == number || !number.matches(regexp))
84         {
85             throw new IllegalArgumentException("input is not a number");
86         }
87     }
88 }
12-22 08:00
查看更多