基於Mysql的IP處理函數inet_aton()與inet_ntoa()的深入分析

來源:互聯網
上載者:User

有個統計需求,需要對IP進行分類統計,Mysql提供了inet_aton()和inet_ntoa()函數進程處理。
具體可以查看官方手冊

INET_ATON(expr)
給出一個作為字串的網路地址的點地址表示,返回一個代表該地址數值的整數。地址可以是4或8位元地址。

mysql> select inet_ntoa(3507806248);
+-----------------------+
| inet_ntoa(3507806248) |
+-----------------------+
| 209.20.224.40 |
+-----------------------+
1 row in set (0.00 sec)

產生的數字總是按照網路位元組順序。如上面,數字按照 209×2563 + 207×2562 + 224×2561 + 40 ×2560 進行計算。我們來驗算下:

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)

INET_ATON() 也能理解短格式 IP 位址:

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)

可以理解成為中間2為地址預設為0。

註: 在儲存由INET_ATON() 產生的值時,推薦你使用 INT UNSIGNED 列。假如你使用 (帶符號) INT列, 則相應的第一個八位組大於127的IP 位址值會被截至 2147483647 (即, INET_ATON('127.255.255.255′) 所返回的值)。當然,直接使用bigint更加省事。

INET_NTOA(expr)
給定一個數字網路地址 (4 或 8 位元),返回作為字串的該地址的電地址表示。也就是inet_aton()的反函數。

mysql> select inet_ntoa(3507806248);
+-----------------------+
| inet_ntoa(3507806248) |
+-----------------------+
| 209.20.224.40 |
+-----------------------+
1 row in set (0.00 sec)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.