如何在Python中将CIDR前缀转换为点分四网络掩码?

pla*_*etp 5 python netmask cidr

如何在Python中将CIDR前缀转换为点分四网络掩码?

例如,如果前缀是12我需要返回255.240.0.0.

Cur*_*urt 10

这是一个较轻的解决方案(没有模块依赖):

netmask = '.'.join([str((0xffffffff << (32 - len) >> i) & 0xff)
                    for i in [24, 16, 8, 0]])
Run Code Online (Sandbox Code Playgroud)


Gre*_*ill 5

你可以这样做:

def cidr(prefix):
    return socket.inet_ntoa(struct.pack(">I", (0xffffffff << (32 - prefix)) & 0xffffffff))
Run Code Online (Sandbox Code Playgroud)