Java IP to Long
IP地址使用整數存儲到數據庫,會這樣做也是最近遇到資料庫查詢瓶頸,進而研究該如何調整新增進資料庫的值,能讓查詢效能提升。
// IP字串轉換成long
public static Long ipStringToLong(String ipStr) {
String[] ips = ipStr.split("\\.");
Long ipNum = 0l;
for (String ip : ips) {
ipNum = ipNum << 8;
ipNum += Integer.parseInt(ip);
}
return ipNum;
}
// IP的long值轉換成字串
public static String ipNumberToString(Long ipNum) {
long[] base = {0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
sb.append((ipNum & base[i]) >> 8 * (3 - i));
if (i != 3)
sb.append(".");
}
return sb.toString();
}
public static void main(String[] args) {
String ip = "172.20.160.120";
Long ipNum = ipStringToLong(ip);
System.out.println("ipNum >> " + ipNum);
String ipStr = ipNumberToString(ipNum);
System.out.println("ipStr >> " + ipStr);
System.out.println("result >> " + ip.equals(ipStr));
}參考網站
Last updated