2016-06-28 1 views

답변

10

netaddr 사용 :

또한 어떤 라이브러리를 사용하지 않고 그것을 할 수
>>> from netaddr import IPAddress 
>>> IPAddress("255.255.255.0").netmask_bits() 
24 

, 단지 넷 마스크의 이진 표현에 1 비트를 계산 :

>>> netmask = "255.255.255.0" 
>>> sum([bin(int(x)).count("1") for x in netmask.split(".")]) 
24 
+0

역순으로 cidr to netmask를 하나의 라이너에서 수행 할 수 있습니까? –

+1

@Bilal이 [post] (https://stackoverflow.com/q/23352028/244297)를 확인하십시오. [24, 16, 8, 0]에서 i에 대한 join ([str ((0xffffffff << (32- 접두사) >> i) 및 0xff))' –

2
>>> IPNetwork('0.0.0.0/255.255.255.0').prefixlen 
24 
0

다음 기능을 사용하십시오. 빠르고 신뢰할 수 있으며 라이브러리를 사용하지 마십시오.

# code to convert netmask ip to cidr number 
def netmask_to_cidr(netmask): 
    ''' 
    :param netmask: netmask ip addr (eg: 255.255.255.0) 
    :return: equivalent cidr number to given netmask ip (eg: 24) 
    ''' 
    return sum([bin(int(x)).count('1') for x in netmask.split('.')]) 
관련 문제