hello world

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])

 

posted @ 2020-12-22 16:22  浩天四哥  阅读(765)  评论(0)    收藏  举报