在IP处理功能inet_aton深度分析()和()inet_ntoa基于MySQL
你可以看到官方手册。
inet_aton(expr)
给出一个网络地址作为字符串的点地址表示,返回一个表示地址数目的整数。地址可以是4位或8位地址。
MySQL >选择inet_ntoa(3507806248);
----------------------- + +
| inet_ntoa(3507806248)|
----------------------- + +
| 209.20.224.40 |
----------------------- + +
1行集(0秒)
所生成的数字总是与网络字节顺序一致。如上所述,这些数字是根据209×2563 + 207 * 2562 + 224 * 2561 + 40 * 2560计算的,让我们核对一下。
MySQL >选择209×战俘(256,3)+ 207 *战俘(256,2)+ 224 *战俘(256,1)+ 40 *战俘(256,0);
------------------------------------------------------------ + +
| 209 *战俘(256,3)+ 207 *战俘(256,2)+ 224 *战俘(256,1)+ 40 *(256,0)|战俘
------------------------------------------------------------ + +
3520061480 | |
------------------------------------------------------------ + +
1行集(0.02秒)
inet_aton()也能理解短格式的IP地址:
MySQL >选择inet_aton('127.0.0.1),inet_aton('127.1);
------------------------ -------------------- + + +
| inet_aton('127.0.0.1)inet_aton('127.1)| |
------------------------ -------------------- + + +
| 2130706433 | 2130706433 |
------------------------ -------------------- + + +
1行集(0秒)
中间2的违约率是0是可以理解的。
注:建议使用int unsigned柱inet_aton产生的价值时,()存储。如果你使用(unsigned)int列前八位的是小于127的IP地址的价值将高达2147483647(即inet_aton(' 127.255.255.255)返回值)。当然,它是直接使用BIGINT更方便。
inet_ntoa(expr)
给定一个数字网络地址(4或8位),它返回的地址电地址表示为一个字符串,这是inet_aton逆()。
MySQL >选择inet_ntoa(3507806248);
----------------------- + +
| inet_ntoa(3507806248)|
----------------------- + +
| 209.20.224.40 |
----------------------- + +
1行集(0秒)