• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
MySQL中将IP转化为int类型
发布日期:2016-4-20 18:4:54

  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则是将主机字节序的整形转化成字符串。