python中ipv4子网掩码点二进制的函数生成

python中ipv4子网掩码点二进制的函数生成,python,functional-programming,ip,list-comprehension,Python,Functional Programming,Ip,List Comprehension,我遇到了以下问题: 给出了ipv4子网掩码中的设置位数 我非常迭代地编写代码 def calculateSnmFromNBits(self): s = "" for i in xrange(35): if i + 1 % 9 == 0: s += '.' if i < self.nBits: self.nBits += 1 elif i < self.nB

我遇到了以下问题: 给出了ipv4子网掩码中的设置位数 我非常迭代地编写代码

 def calculateSnmFromNBits(self):
    s = ""
    for i in xrange(35):
        if i + 1 % 9 == 0:
            s += '.'
            if i < self.nBits:
                self.nBits += 1
        elif i < self.nBits:
           s += '1'
        else:
           s += '0'
    return s
def计算nmfromnbits(self):
s=“”
对于X范围内的i(35):
如果i+1%9==0:
s+='。'
如果我
我尝试了列表理解,但我需要一个elif来插入点 所以我只能这样做

['1' if i < nBits else '0' for i in xrange(32)] #missing the dots
['1'如果i
多谢各位

nBits=27
print '.'.join((('1'*nBits+'0'*(32-nBits))[i:i+8]) for i in (0,8,16,24))
结果:

11111111.11111111.11111111.11100000
或者


你有问题吗?是的,我的问题是如何将这些点整合到一行sry中:)
print '.'.join(str(((0xFFFFFFFF& (~((1<<(32-nBits))-1)))>>(i*8))&255) for i in range(3,-1,-1))
255.255.255.224
import ipaddress
print(str(ipaddress.ip_network('0.0.0.0/%s'%nBits).netmask))