关于IP的工具类

很多WEB应用有用到对IP的处理,最近刚好在做这个东西,顺便记录一下:

 1 import org.apache.commons.lang.StringUtils;
 2 
 3 /**
 4  * Ip工具类
 5  *
 6  */
 7 public class IpUtils {
 8 
 9     /**
10      * 将IP地址格式化为定长的IP段.
11      * 例如: 192.168.0.122 => 192.168.000.122
12      * @param ip
13      * @return
14      */
15     public static String formatIp(String ip) {
16         String[] ips = ip.split("\\.");
17         String newIp = "";
18         for (int i = 0; i < ips.length; i++) {
19             switch (ips[i].length()) {
20             case 1:
21                 newIp += "00" + ips[i] + ".";
22                 break;
23             case 2:
24                 newIp += "0" + ips[i] + ".";
25                 break;
26             case 3:
27                 newIp += ips[i] + ".";
28                 break;
29             }
30         }
31         newIp = newIp.substring(0, newIp.length() - 1);
32         return newIp;
33     }
34 
35     /**
36      * 将定长的IP段还原.
37      * 例如: 010.001.000.122 => 10.1.0.122
38      * @param ip
39      * @return
40      */
41     public static String normalIp(String ip) {
42         //转换ip字符串格式
43         String[] ipArray = StringUtils.split(ip, ".");
44         for(int i=0;i<ipArray.length;i++)
45         {
46             int temp = Integer.parseInt(ipArray[i]);
47             ipArray[i] = String.valueOf(temp);
48         }
49         return StringUtils.join(ipArray,".");
50     }
51     
52     /**
53      * 把ip地址转换成数字
54      * @param ip
55      * @return
56      */
57     public static long ip2Long(String ip) {
58         String[] ipArray = StringUtils.split(ip, ".");
59         long retLong = 0;
60         if (!checkIP(ip)) {
61             return -1;
62         }
63         for(int i=0;i<ipArray.length;i++)
64         {
65             long temp = Long.parseLong(ipArray[i]);
66             int j = 3 - i;
67             while (j > 0) {
68                 temp = temp * 256;
69                 j--;
70             }
71             retLong += temp;
72         }
73         return retLong;
74     }
75     
76     public static boolean checkIP(String ip){
77         return ip.matches("\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}");
78     }
79 
80     
81     public static void main(String[] args) {
82         System.out.println(IpUtils.ip2Long("255.255.255.255"));
83         System.out.println(IpUtils.checkIP("19a2.1685.0.4"));
84     }
85 
86 }

 

posted @ 2013-12-24 10:50  SuperGigi  阅读(461)  评论(0编辑  收藏  举报