我有點困在一個特定的問題上。我需要計算 IP 地址所屬的子網。它可以用 SQL 或 Python 或類似的語言完成。
因此,如果我有例如 100.100.100.105,我需要獲取所有子網:
100.100.100.105/32
100.100.100.104/31
100.100.100.104/30
100.100.100.104/29
100.100.100.96/28
100.100.100.96/27
100.100.100.64/26
...
100.64.0.0/10
100.0.0.0/9
...
64.0.0.0/2
0.0.0.0/1
但真的不知道如何處理這個問題。
uj5u.com熱心網友回復:
你可以用 python3 內置ipaddress模塊來實作這一點
import ipaddress
addresses = []
# get the int representation of your ip
ip = int(ipaddress.IPv4Address('100.100.100.105'))
for mask in range(32):
addresses.append(f'{ipaddress.IPv4Address(ip & ((2**32-1)-(2**mask -1)))}/{32-mask }')
在每次迭代中,我們通過在 IP 和掩碼的整數表示之間進行邏輯 AND 運算來將掩碼應用于我們的 IP。然后我們將結果轉換為 ip 八位位元組并附加“/24”子網符號。可以替換2**32-1使用4294967295,我離開那里所以它更清楚發生了什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/339067.html
上一篇:從資料庫提交后,PHP保留下拉值
