將ip轉為整數以及整數轉為ip的java實現
阿新 • • 發佈:2019-02-08
一個ip地址用字串儲存,長度為(7-15)也就是(14-30bytes),而用int儲存只需要4bytes,所以下面的程式碼:
/** * ip字串轉整數 * ip是.分割的整數字符串,按照r進位制轉十進位制的規律,按權相加求和,這裡的權是256. * @param ip * @return */ public int ip2Int(String ip){ if(null == ip || "".equals(ip.trim()) || !checkIP(ip)) return 0; String[] ipStrs = ip.split("\\.");//分割ip int result = 0; for(int i = 0;i < 4;i ++){ Integer ipSubInteger = Integer.parseInt(ipStrs[i]); if(ipSubInteger > 255) {//正則驗證不能為負數 result = 0; break; } result += (ipSubInteger << (24 - i * 8)); } return result; } /*正則驗證ip*/ private boolean checkIP(String ip){ return ip.matches("\\d{1,3}(\\.\\d{1,3}){3}"); } /** * 整數轉ip * @param ip * @return */ public String int2Ip(int ip){ StringBuilder builder = new StringBuilder(String.valueOf(ip >>> 24)); builder.append("."); builder.append(String.valueOf((ip & 0X00FFFFFF) >>> 16)); builder.append("."); builder.append(String.valueOf((ip & 0X0000FFFF) >>> 8)); builder.append("."); builder.append(String.valueOf(ip & 0X000000FF)); return builder.toString(); }