我们平常方便保存ip地址使用 varchar(15) 来保存,ip地址有时需要索引,有时不需要,毕竟我们保存的ip地址仅仅用于阅读就行了。

其实ip地址是一个无符号的32位整型,中间的点用于方便阅读的。

mysql提供了INET_ATON 和 INET_NTOA 两个函数来进行ip地址和整数之间的转换。

 

示例:

select inet_aton('255.255.255.255');
4294967295

select inet_ntoa(4294967295);
255.255.255.255

因此ip地址使用int(10)存储即可。整型字段的存储比字符串效率会高上很多。

 

计算方法:

a.b.c.d
a * 256的3次方 + b * 256的2次方 + c * 256的1次方 + d * 256的0次方。

255.255.255.255 = 
255*2563+255*2562+255*2561+255*2560 = 
255*16777216+255*65536+255*256+255*1 = 
4278190080+16711680+65280+255 = 
4294967295