본문 바로가기
프로그래밍/Web.

[JAVA] IP 를 long 형으로 변환하기

by _Chavi 2020. 8. 6.

접근 제어 시 특정 IP를 허용, 금지는 간단하게 이 꼴(=) 연산으로 구분할 수 있습니다.

그러나 특정 IP의 범위를 허용해 주기 위해선 어떻게 해야 할까요?

 

IP를 long 형식으로 비교!
private long convertIP2Long (String ip) {
	/* IP = IP1.IP2.IP3.IP4
	 * 공식 > IP1 * (256)^3 + IP2 * (256)^2 + IP3 * (256)^1 + IP4 * (256)^0 
	 */
	String[] ipArray = ip.split("\\.");
	long result = 0;
	for (int index = 0; index < ipArray.length; index++) {
		result += Integer.parseInt(ipArray[index]) * Math.pow(256, 3 - index);
	}
	return result;
}

위와 같은 형식으로 IP를 숫자 형식으로 바꾼 뒤에 범위를 비교해 주면 간단하게 구현할 수 있습니다.

  첫IP 검사IP 끝IP
IP 127.0.0.1 127.100.100.115 127.255.255.255
변환값(long) 2130706433 2137285747 2147483647

검사 IP가 첫 IP와 끝 IP의 변환 값 사이에 들어가는 모습을 볼 수 있습니다.

 

참고 : https://www.smartconversion.com/unit_conversion/IP_Address_Converter.aspx

댓글