今天再看sql優化的時候,突然看到一點說建議ip在數據庫裏用int類型存儲,試了一下,在這裏記錄一下
/**
*
* (Ip轉Integer)
* 方法名:ipToInteger
* @exception
* @since 1.0.0
*/
public static int ipToInteger(String ip){
String[] ips = ip.split("\\.");
int ipFour = 0;
//因爲每個位置最大255,剛好在2進制裏表示8位
for(String ip4: ips){
Integer ip4a = Integer.parseInt(ip4);
//這裏應該用+也可以,但是位運算更快
ipFour = (ipFour << 8) | ip4a;
}
return ipFour;
}
/**
*
* (Integer轉IP)
* 方法名:IntegerToIp
* @param ip
* @return String
* @exception
* @since 1.0.0
*/
public static String IntegerToIp(Integer ip){
//思路很簡單,每8位拿一次,就是對應位的IP
StringBuilder sb = new StringBuilder();
for(int i = 3; i >= 0; i--){
int ipa = (ip >> (8 * i)) & (0xff);
sb.append(ipa + ".");
}
sb.delete(sb.length() - 1, sb.length());
return sb.toString();
}