Преобразование IP-адреса в int/long в Java

В этом руководстве мы рассмотрим методы получения десятичного числа (с основанием 10) из IP-адреса. Использование десятичного IP-кодирования (основание 10) немного странно, хотя и разрешено в браузере.

Как закодировать IP-адрес в десятичной системе

IP-адрес состоит из группы из 4 чисел. Например, если вы хотите закодировать 192.168.1.1 в десятичной системе, вы должны определить в Java числа, разделенные "." IP-адреса, с помощью функции split и поместите каждый из них в поле в таблице. IP-адрес основан на 256, вот формула преобразования:

192 x 256^3 + 168 x 256^2 + 1 x 256^1 + 1 x 1
3221225472 + 11010048 + 256 + 1 = 3232235777
Проверить это можно, перейдя в browser
http://3232235777
Два способа выразить IP-адрес в десятичном числе:

1- IP-адрес в битах shift

Мы сдвигаем n*8 бит влево, это метод сделать мощность двоичным способом. Вот пример 8-битного смещения последнего числа. 192.168.1.1:

<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: авто; text-align: center;" >сдвиг битов 8-битное смещение IP-адресПример вычисления (1 x 256^1) в двоичном
public class IP_Decimale {

public static void main(String[] zero) {
String ip = "192.168.1.1";
//IP-адрес в десятичной системе счисления
длинный iplong = IPenBase10(ip);
System.out.println(iplong);
}

public static long IPenBase10(String IP address) {

long decimal = 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 < < (i*8);
десятичный += битшифт;
System.out.println(ip+" < < "+(i*8)+" : "+bitshift);
}
возвращает десятичную дробь;
}
}
Output
192 < < 24 : 3221225472<бр />168 < < 16 : 11010048<бр />1 < < 8 : 256<бр />1 < < 0 : 1
result: 3232235777

2- IP-адрес питания 256

Этот метод заключается в вычислении мощности с помощью функции Math.pow и умножаем на цифру IP-адреса.

public static long IPenBase10puiss(String IP address) {

long decimal = 0;
String[] 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);
}
возвращает десятичную дробь;
}
References:
Сеть в Java: Манипулирование IP-адресами
Assist: Как закодировать IP-адрес в десятичной системе?
Википедия: Битовые сдвиги
rice Университет: Руководство по работе с битами Java
StackOverFlow:  Преобразование IP-адреса в десятичное и наоборот