1
범위에서 첫 번째 및 마지막 ip 주소가있는 경우 어떻게 파이썬에서 서브넷 마스크를 계산할 수 있습니까?파이썬에서 2 개의 ip 주소로 넷 마스크를 계산하는 방법
예를 들어 넷 마스크를 사용하고 싶습니다. 255.255.255.0.
감사)
범위에서 첫 번째 및 마지막 ip 주소가있는 경우 어떻게 파이썬에서 서브넷 마스크를 계산할 수 있습니까?파이썬에서 2 개의 ip 주소로 넷 마스크를 계산하는 방법
예를 들어 넷 마스크를 사용하고 싶습니다. 255.255.255.0.
감사)
는
def ip_to_int(a, b, c, d):
return (a << 24) + (b << 16) + (c << 8) + d
이 그럼 당신은 몇 가지의 배타적 논리합을 연산을 수행 표현을 할 수 있습니다 ... 우리가 가진 것을 말한다. 예 :
>>> bin(0xFFFFFFFF^ip_to_int(192, 168, 1, 1)^ip_to_int(192, 168, 1, 254))
'0b11111111111111111111111100000000'
그래서 :
def mask(ip1, ip2):
"ip1 and ip2 are lists of 4 integers 0-255 each"
m = 0xFFFFFFFF^ip_to_int(*ip1)^ip_to_int(*ip2)
return [(m & (0xFF << (8*n))) >> 8*n for n in (3, 2, 1, 0)]
>>> mask([192, 168, 1, 1], [192, 168, 1, 254])
[255L, 255L, 255L, 0L]
덕분에, 완벽하게 작동) 설계에서 – Gunnar
그게 아름다운 –