IP 存放

2018-07-08  本文已影响4人  黄二的NPE
  • IP的存放

在MySQL中,IP如果存放为varchar类型,一般需要46个字节(15*3+1),但是如果存放为无符号整形,只需要4个字节,相比之下,存放为无符号整形可以节省更多的存储空间。

  • Java代码

string转long
    public static long stringToLong(String ip){
        return Optional.ofNullable(ip.split("\\."))
                .map(ips -> (Long.parseLong(ips[0]) << 24) + (Long.parseLong(ips[1]) << 16) + (Long.parseLong(ips[2]) << 8) + (Long.parseLong(ips[3])))
                .orElse(0L);
    }
long转string
    public static String longToString(Long ip){
        StringBuffer sb = new StringBuffer();
        IntStream.range(0,4).forEach(i -> sb.append((ip >> 8 * (3 - i)) & 0xFF).append("."));
        return sb.substring(0, sb.length() - 1);
    }
  • 数据库

string转long
select INET_ATON('192.168.0.1');//3232235521
long转string
select INET_NTOA(3232235521);//192.168.0.1

存储

ip 存放数据库,可以用ip int(11) UNSIGNED,无符号int类型

上一篇 下一篇

猜你喜欢

热点阅读