Pertanyaan Bagaimana cara mengubah awalan CIDR ke netmask bertitik-titik dengan Python?


Bagaimana cara mengubah awalan CIDR menjadi netmask bertitik-titik di Python?

Misalnya, jika awalannya 12 Saya harus kembali 255.240.0.0.


4
2018-04-28 22:09


asal


Jawaban:


Anda dapat melakukannya seperti ini:

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

5
2018-04-28 22:12



Berikut ini adalah solusi pada sisi yang lebih ringan (tidak ada dependensi modul):

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

9
2018-01-08 03:37