python 中 ipv4 子网掩码点分二进制的功能生成
Functional generation of ipv4 subnetmask dotted binary in python
我遇到了以下问题:
给定 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
我尝试了列表理解,但我需要一个 elif 来插入点
所以我只能做
['1' if i < nBits else '0' for i in xrange(32)] #missing the dots
谢谢
nBits=27
print '.'.join((('1'*nBits+'0'*(32-nBits))[i:i+8]) for i in (0,8,16,24))
结果:
11111111.11111111.11111111.11100000
或者,
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))
我遇到了以下问题: 给定 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
我尝试了列表理解,但我需要一个 elif 来插入点 所以我只能做
['1' if i < nBits else '0' for i in xrange(32)] #missing the dots
谢谢
nBits=27
print '.'.join((('1'*nBits+'0'*(32-nBits))[i:i+8]) for i in (0,8,16,24))
结果:
11111111.11111111.11111111.11100000
或者,
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))