ip以数字形式存储
ip转成数字存储,好处就不说了echo ip2long("119.129.236.169");
echo PHP_EOL;
echo long2ip("2005003433");
echo PHP_EOL;
在转化那时候会出现负数问题! 同时mysql如果用int类型还会出现位数不够问题
负数解决方案:echo sprintf('%u',ip2long("47.92.135.216"));
位数不够解决方案:用varchar类型 或者用bigint(20)
IP转化数值出现负数的原因:
IPv4使用无符号32位地址,因此最多有2的32次方减1(4294967295)个地址。书写用4个小数点分开的10进制数。 记为A.B.C.D,例如:192.168.100.100。IPv4地址每个10进制数都是无符号的字节,范围在0~255,将IPv4地址转为无符号数,其实就是将每个10进制数放在对应的8位上,组成一个4字节的无符号整型。192.168.100.100,192,168在高8位100,100在低8位
ip以数字形式存储