![](/img/trans.png)
[英]what does mean “compatible=true”, in changing IPv4 address to IPv6 address in netaddr module in python
[英]How to get the IP prefix while we have subnet and IPv4 address using python-netaddr?
我正在使用python-netaddr庫來處理IP地址和子網。 我閱讀了netaddrd的完整文檔: Netaddr文檔 。 但沒有找到解決我問題的方法。 我有一個IP地址和子網我想通過使用它們獲得該IP的前綴。 這樣我就可以打印所有進入子網的ip。
例如:
Ip Address: 192.0.2.0
Subnet Network: 255.255.255.0
It should return the prefix which is : 24
要獲得24,您可以使用以下代碼段
ip = IPNetwork('192.0.2.0/255.255.255.0')
print ip.prefixlen
但是如果你想要子網中所有地址的列表,它更容易使用:
ip = IPNetwork('192.0.2.0/255.255.255.0')
list(ip)
使用給定的Netmask,我們可以使用以下函數獲取前綴:
def getPrefix(mask):
prefix = sum([bin(int(x)).count('1') for x in mask.split('.')])
return prefix
def getPrefix(binary):
prefixCount=0
for i in (str(binary)):
if(i == '1'):
prefixCount+=1
return prefixCount
如果子網轉換為二進制格式並在輸入中給出,這將返回“Prefixcount”。
子網掩碼是:255.255.255.0這是如何ic它:1。 1。 1. 0
255是所有8位都打開。 即。 全1。 並且0表示所有8位都被關閉。 如果你看一下這個子網掩碼[255.255.255.0],前三個八位字節全部變為'ON',而最后一個八位字節被'OFF'。
因此,在這種情況下,計算所有ON的八位字節,我們可以說3個八位字節:255.255.255.0 1。 1。 1 .0 8 + 8 + 8 + 0 = 24
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.