在做电信的项目,或者银行、第三方支付业务等高保密,需要设计到存储IP的业务中。为了节省空间和性能,大家通常把字符串char(15)存储IP地址(占用16个字节)改为使用unsigned int来存储。
unsigned int只需要4个字节。下面就列出如何利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法。
select inet_aton('192.168.1.200'); // 结果为3232235976 select inet_ntoa('3232235976'); //192.168.1.200
更高级的使用还有很多,比如按网段分组。需要注意的是linux C中有个函数inet_aton可以将IPv4的字符串地址('192.168.1.200')转换成网络地址结构体 struct in_addr。
但是在mysql中也有inet_aton这个函数,也是将字符串IPv4地址转化成整形。经过转换后的4位整形却是主机字节序的。和linux的库函数正好相反。同样的 ,linux中,还有inet_ntoa,是将网络字节序的整形转化成字符串("192.168.1.200")的IPv4地址。而mysql的inet_ntoa则是将主机字节序的整形转化成字符串。
: » MySQL中将IP转化为int类型的高效用法
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/252340.html