La méthode pour convertir le masque de réseau de la notation décimale à points (ABCD) en notation CIDR est Publié plus tôt, mais il doit être converti en sens inverse. J'étais pressé par, alors je l'ai écrit.
Notez qu'aucun traitement d'erreur n'est effectué, donc si vous passez un masque de réseau étrange, une valeur étrange sera renvoyée. S'il vous plaît soyez prudente.
import socket
import struct
def mask2cidr(mask):
"""Convert netmask from Dotted address to CIDR."""
return bin(struct.unpack('!L', socket.inet_pton(socket.AF_INET, mask))[0])[2:].index('0')
>>> mask2cidr('255.255.255.0')
24
>>> mask2cidr('255.255.240.0')
20
>>> mask2cidr('255.255.255.192')
26
Recommended Posts