255.255.255.255 直接以字符串存入数据库使用varchar(15),而ipv4本质是32位的二进制码,int也有32位,但是因为有一个符号位存不下所以只能用long型来存储ip了。8个字节还是比15个字节差不多省了一半空间了。
0xFF,这代表的是十六进制数FF即1111 1111,对应十进制即为255,当一个数n对这个 0xFF 作 & 操作时,相当于求n除以256所得的余数,也就是相当于n%256
代码实现
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 | public class IPUtil {
 
 
 
 
 
 
 
 public static long ipToLong(String strIp) {
 String[]ip = strIp.split("\\.");
 return (Long.parseLong(ip[0]) << 24) + (Long.parseLong(ip[1]) << 16) + (Long.parseLong(ip[2]) << 8) + Long.parseLong(ip[3]);
 }
 
 
 
 
 
 
 
 
 
 
 
 public static String longToIP(long longIp) {
 StringBuffer sb = new StringBuffer("");
 sb.append(String.valueOf((longIp >>> 24)));
 sb.append(".");
 sb.append(String.valueOf((longIp >>> 16) & 0xFF ));
 sb.append(".");
 sb.append(String.valueOf((longIp >>> 8) & 0xFF));
 sb.append(".");
 sb.append(String.valueOf((longIp)));
 return sb.toString();
 }
 
 public static void main(String[] args) {
 System.out.println(ipToLong("219.239.110.138"));
 System.out.println(longToIP(18537472));
 }
 }
 
 |