亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

python IP地址轉整數

瀏覽:6日期:2022-07-04 17:32:48

背景

今天有人問我 “為什么數據庫中有人推薦使用 int 類型來保存 IP 地址?”。現在(2020年)來看這個東西已經有點過時了,一方面是磁盤空間不在那么貴,另一方面是 IPv6 與這條法則不兼容。

下面我們就來看一下把 IPv4 地址轉換成整數的原理和收益各是什么。

轉換的原理

一個 IPv4 類的地址共分為四個部分 0.0.0.0 然而每一個部分的取值范圍都在 0 ~ 255;也就是說每一個部分都可以用一個字節來保存,總共寫個字節就夠了,4 個字節不就是 int 嗎?

第一步 把 IP 地址的各個部分轉換為一個字節,并拼接它們,那么會得到一個 4 字節的串。

import structdef aton(ip_address: str) -> bytes: result = [] for i in ip_address.split(’.’): result.append(struct.pack('!B', int(i))) return b’’.join(result)

第二步 把字節串轉換成整數。

In [2]: aton('127.0.0.1') Out[2]: b’x7fx00x00x01’In [3]: int.from_bytes(b’x7fx00x00x01’,’big’) Out[3]: 2130706433

這樣我們就把 IPv4 地址轉換成了一個整數,完整的代碼如下。

import structdef aton(ip_address: str) -> bytes: result = [] for i in ip_address.split(’.’): result.append(struct.pack('!B', int(i))) return b’’.join(result)if __name__ == '__main__': bts = aton('127.0.0.1') print(int.from_bytes(bts, ’big’))

運行效果如下。

python3 main.py 2130706433

轉換的收益與限制

如果不做轉換可以使用 varchar 來保存 IPv4 地址,這樣的話需要 15 (3*4 + 3) 個字節才行;如果轉換一下只需要 4 個字節就行了,節約了磁盤空間,可能會多用點 cpu 時間。

今天來說 IPv6 已經是主流,它的長度直接從之前的 4 字節直接漲到了 16 字節;int 不再能滿足需求,為了可以統一處理這兩種類型的 IP 現在推薦使用 varchar 來保存。

inet_aton 與 inet_ntoa

這一對 IP 是 IPv4 時代的轉換函數,目前來看已經過時。

1、inet_aton IP 轉數字。

In [4]: socket.inet_aton('127.0.0.1') Out[4]: b’x7fx00x00x01’

2、inet_ntoa 數字轉 IP。

In [5]: socket.inet_ntoa(b’x7fx00x00x01’) Out[5]: ’127.0.0.1’

inet_pton 與 inet_ntop

這是一對新的 API ,這對 API 兼容了 IPv4 和 IPv6 。

In [6]: socket.inet_pton(socket.AF_INET6,'5aef:2b::8') Out[6]: b’Zxefx00+x00x00x00x00x00x00x00x00x00x00x00x08’In [7]: socket.inet_ntop(socket.AF_INET6,b’Zxefx00+x00x00x00x00x00x00x00x00x00x00x00x08’) Out[7]: ’5aef:2b::8’In [8]: socket.inet_pton(socket.AF_INET,'127.0.0.1') Out[8]: b’x7fx00x00x01’In [9]: socket.inet_ntop(socket.AF_INET,b’x7fx00x00x01’) Out[9]: ’127.0.0.1’

以上就是python IP 地址轉整數的詳細內容,更多關于python ip地址轉整數的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 八戒午夜精品视频在线观看 | 欧美成人性色区 | 中国美女乱淫免费看视频 | 超级碰碰碰在线观看 | 亚洲国产欧洲综合997久久 | 亚洲三级成人 | 欧美日韩精品一区二区免费看 | 日本三级2021最新理论在线观看 | 久久99视频精品 | 第一色区 | 一级特级欧美a毛片免费 | 国产成人精品福利站 | 亚洲性久久久影院 | 精品理论片一区二区三区 | 亚洲天堂男人网 | 久久久国产精品免费 | 久久亚洲视频 | 天码毛片一区二区三区入口 | 欧美激情久久久久久久久 | 怡红院免费全部视频在线视频 | 日本欧美不卡一区二区三区在线 | 国产八区 | 国产午夜亚洲精品第一区 | 国产伦久视频免费观看视频 | 精品欧美一区二区在线观看欧美熟 | 精品国产欧美一区二区三区成人 | www.成人在线视频 | 乱子伦农村xxxx | 久久欧美精品欧美久久欧美 | 先锋影音xfyy5566男人资源 | 国产成人精品久久一区二区三区 | 国产亚洲一区二区手机在线观看 | 成年人在线免费观看网站 | 18视频免费网址在线观看 | 99在线视频精品费观看视 | 91久久亚洲国产成人精品性色 | 日韩专区亚洲综合久久 | 免费国产不卡午夜福在线观看 | 日韩亚洲一区二区三区 | 99视频在线国产 | 九九九九热精品视频 |