《Mysql必讀基于Mysql的IP處理函數inet_aton()與inet_ntoa()的深入分析》要點:
本文介紹了Mysql必讀基于Mysql的IP處理函數inet_aton()與inet_ntoa()的深入分析,希望對您有用。如果有疑問,可以聯系我們。
MYSQL數據庫有個統計需求,需要對IP進行分類統計,Mysql提供了inet_aton()和inet_ntoa()函數進程處理.
具體可以查看官方手冊.
MYSQL數據庫INET_ATON(expr)
給出一個作為字符串的網絡地址的點地址表示,返回一個代表該地址數值的整數.地址可以是4或8比特地址.
MYSQL數據庫mysql> select inet_ntoa(3507806248);
+-----------------------+
| inet_ntoa(3507806248) |
+-----------------------+
| 209.20.224.40???????? |
+-----------------------+
1 row in set (0.00 sec)
MYSQL數據庫產生的數字總是按照網絡字節順序.如上面,數字按照 209×2563 + 207×2562 + 224×2561 + 40 ×2560 進行計算.我們來驗算下:
MYSQL數據庫mysql> select 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0);
+------------------------------------------------------------+
| 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0) |
+------------------------------------------------------------+
|???????????????????????????????????????????????? 3520061480 |
+------------------------------------------------------------+
1 row in set (0.02 sec)
MYSQL數據庫INET_ATON() 也能理解短格式 IP 地址:
MYSQL數據庫mysql> select inet_aton('127.0.0.1'),inet_aton('127.1');
+------------------------+--------------------+
| inet_aton('127.0.0.1') | inet_aton('127.1') |
+------------------------+--------------------+
|???????????? 2130706433 |???????? 2130706433 |
+------------------------+--------------------+
1 row in set (0.00 sec)
MYSQL數據庫可以理解成為中間2為地址默認為0.
MYSQL數據庫注: 在存儲由INET_ATON() 產生的值時,推薦你使用 INT UNSIGNED 列.假如你使用 (帶符號) INT列, 則相應的第一個八位組大于127的IP 地址值會被截至 2147483647 (即, INET_ATON('127.255.255.255′) 所返回的值).當然,直接使用bigint更加省事.
MYSQL數據庫INET_NTOA(expr)
給定一個數字網絡地址 (4 或 8 比特),返回作為字符串的該地址的電地址表示.也就是inet_aton()的反函數.
MYSQL數據庫mysql> select inet_ntoa(3507806248);
+-----------------------+
| inet_ntoa(3507806248) |
+-----------------------+
| 209.20.224.40???????? |
+-----------------------+
1 row in set (0.00 sec)
《Mysql必讀基于Mysql的IP處理函數inet_aton()與inet_ntoa()的深入分析》是否對您有啟發,歡迎查看更多與《Mysql必讀基于Mysql的IP處理函數inet_aton()與inet_ntoa()的深入分析》相關教程,學精學透。維易PHP學院為您提供精彩教程。