MySQL中将IP转化为int类型的高效用法

在做电信的项目,或者银行、第三方支付业务等高保密,需要设计到存储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类型的高效用法

: » MySQL中将IP转化为int类型的高效用法

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/252340.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论