Java에서 IP 주소를 int/long으로 변환
이 튜토리얼에서는 IP 주소에서 십진수(밑수 10)를 가져오는 방법을 살펴보겠습니다. 10진수 IP 인코딩 사용 (base 10)는 브라우저에서 허용되지만 약간 이상합니다.IP 주소를 decimal로 인코딩하는 방법
IP 주소는 4자리 숫자로 구성됩니다. 예를 들어, 192.168.1.1을 10 진수로 인코딩하려면 Java에서 split 그리고 각각을 테이블의 상자에 넣습니다. IP 주소는 base 256이며, 변환 공식은 다음과 같습니다.
192 x 256^3 + 168 x 256^2 + 1 x 256^1 + 1 x 1
3221225472 + 11010048 + 256 + 1 = 3232235777
브라우저로 이동하여 확인할 수 있습니다
http://3232235777IP 주소를 십진수로 표현하는 두 가지 방법:
1- 비트 시프트의 IP 주소
n*8비트를 왼쪽으로 이동하는데, 이진수로 거듭제곱을 만드는 방법입니다. 다음은 의 마지막 숫자에 대한 8비트 오프셋의 예입니다. 192.168.1.1 :![]() |
이진수로 (1 x 256^1) 계산 예: |
public class IP_Decimale {Output
public static void main(String[] zero) {
String ip = "192.168.1.1";
//십진수 단위의 IP 주소
길이 iplong = IPenBase10(ip);
System.out.println(iplong);
}
public static long IPenBase10(문자열 IP 주소) {
긴 십진수 = 0;
//숫자는 점으로 구분됩니다
//배열의 상자에 각각을 넣습니다
String[] arrayIP = IP.address.split("\\.");
//오른쪽에서 왼쪽으로
for (int i = 3; i >= 0; i--) {
//long
long ip = Long.parseLong(arrayIP[3 - i]);
//왼쪽으로 (i*8) 비트를 이동하고 sum
long bitshift= ip < < (나*8);
십진수 += 비트 시프트;
System.out.println(ip+" < < "+(i*8)+": "+비트시프트);
}
10진수를 반환합니다.
}
}
192 < < 24 : 3221225472
168 < < 16 : 11010048
1 < < 8 : 256
1 < < 0 : 1
result: 3232235777
2- 256
이 방법은 Math.pow IP 주소의 숫자를 곱합니다.public static long IPenBase10puiss(문자열 IP 주소) {참조:
긴 십진수 = 0;
문자열[] arrayIP = IP.address.split("\\.");
//오른쪽에서 왼쪽으로
for (int i = 0; i<=3; i++) {
long ip = Long.parseLong(arrayIP[i]);
long puiss= ip * (long) Math.pow(256, 3-i);
십진수 += 거듭제곱;
System.out.println(arrayIP[i] +": "+puiss);
}
10진수를 반환합니다.
}
Java의 네트워크: IP 주소 조작
Assist : IP 주소를 10 진수로 인코딩하는 방법?< / a>
위키백과: 비트 이동
rice University: Java 비트 조작 가이드
StackOverFlow: IP 주소를 10진수로 또는 그 반대로 변환