JavaでIPアドレスをint / longに変換する

このチュートリアルでは、IP アドレスから 10 進数 (基数 10) を取得する方法を見ていきます。10 進数の IP エンコードの使用(基数10)はブラウザで許可されていますが、少し奇妙です.

IPアドレスを10進数でエンコードする方法

IPアドレスは4つの数字のグループで構成されています。たとえば、192.168.1.1を10進数でエンコードする場合は、Javaで関数split を作成し、それぞれをテーブル内のボックスに入れます。IPアドレスは基数256で、変換式は次のとおりです:

192 x 256^3 + 168 x 256^2 + 1 x 256^1 + 1 x 1
3221225472 + 11010048 + 256 + 1 = 3232235777
これはブラウザ
http://3232235777
IPアドレスを10進数で表す2つの方法:

1- IPアドレスのビットシフト

n * 8ビットを左にシフトし、バイナリ方式で累乗する方法です。次に、最後の数の 8 ビット オフセットの例を示します。192.168.1.1:

ビットシフト8ビットオフセットIPアドレス
バイナリ<で(1 x 256^1)を計算する例 /td>

public class IP_Decimale {

public static void main(String[] zero) {
String ip = "192.168.1.1";
//10進数のIPアドレス
long iplong = IPenBase10(ip);
System.out.println(iplong);
}

public static long IPenBase10(文字列 IP アドレス) {

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)ビットを左にシフトし、合計
long bitshift= ip <<(i*8);
10 進数 += ビットシフト;
System.out.println(ip+" <<"+(i*8)+" : "+ビットシフト);
}
10 進数を返します。
}
}
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;
文字列[] 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);
10進数+=累乗;
System.out.println(arrayIP[i] +": "+puiss);
}
10 進数を返します。
}
References:
Java のネットワーク: IP アドレスの操作
Assist: IP アドレスを 10 進数でエンコードする方法?
Wikipedia: ビットシフト
rice University: Java Bit Manipulation Guide
StackOverFlow: IP アドレスから 10 進数への変換、またはその逆
Advertisement

AdBlock Detected

Please disable your ad blocker and refresh the window to use this website.