Python下对IP地址的一些计算
直接上干货
from ipaddress import ip_address as ip
from ipaddress import ip_network as nw
def n2mask(n):
#传入一个/23 /24 /25类似的掩码(只传数字),返回点分十进制格式的掩码
n = ('1' * n).ljust(32, '0') #变成32位的二进制
n = int(n, 2) #变成十进制
return str(ip(n))
def mask2n(n):
#传入一个点分十进制的掩码,返回/23 /24 /25的端掩码格式
n = int(ip(n)) #十进制的IP格式
n = f'{n:b}' #转成二进制
return n.count('1')
def hmask(n):
#传入点分十进制的掩码格式,返回反掩码
return nw(n, strict=False).hostmask
def nmask(n):
#传入点分十进制的掩码格式,返回掩码
return nw(n, strict=False).netmask
def hcount(n):
#传入一个点分十进制的掩码,返回这个掩码的主机数量
return nw(n, strict=False).num_addresses - 2
def ip2bin(n):
#将一个单独的IP地址转换成为一个32位的二进制格式
n = int(ip(n)) #转IP为十进制
return f'{n:b}'
def bin2ip(n):
#将一个32位的二进制IP地址转变成为点分十进制的IP地址
n = int(n, 2) #转二进制为十进制
return str(ip(n))
def nip(n):
#返回一个IP地址段的网络号,比如10.89.32.73/27返回10.89.32.64
return str(nw(n, strict=False)[0])
def bip(n):
#返回一个IP地址段的广播号,比如10.89.32.73/27返回10.89.32.95
return str(nw(n, strict=False)[-1])

浙公网安备 33010602011771号