IPアドレスと整数間の変換実装コード(asp.net)

1692 ワード

知識点:1つのバイナリ数、ビットによってnビットを左にシフトして、この数の値に2を乗じたn次方
バイナリに2を除くと右に1ビット移動
1、IPアドレスを整数に変換する
原理:IPアドレスの各セグメントは8ビットの符号のない整数である0-255と見なすことができて、各セグメントを1つのバイナリ形式に分割して組み合わせて、それからこのバイナリ数を
符号なし32は整数です.
例:ipアドレスは10.0.3.193です.
セグメントあたりの数字に対応するバイナリ数
10 00001010
0 00000000
3 00000011
193 11000001
組み合わせると、00001010億00000億011 11000001、10進数に変換すると167773121、IPアドレス変換後の数字がそれです.
 
  
public class Ip {
public static void main(String[] args) {
System.out.print(ip2int("10.0.3.193"));
}
public static long ip2int(String ip) {
String[] items = ip.split("\\.");
return Long.valueOf(items[0]) << 24
| Long.valueOf(items[1]) << 16
| Long.valueOf(items[2]) << 8
| Long.valueOf(items[3]);
}
}

2、整数をIPアドレスに変換する
原理:この整数を32ビットのバイナリ数に変換します.左から右へ、8ビットごとに分割して、4段8ビットのバイナリ数を得て、これらのバイナリ数を整数に変換して加算します」.このipアドレスです
例:16777321
バイナリ表示形式:00001010億00000億011 11000001
4つのセグメントに分割:00001010000001010000011110000001、それぞれ整数に変換して「」を加算します.10.0.3.193を得た.
 
  
public class Ip {
public static void main(String[] args) {
System.out.print(int2ip(167773121));
}
public static String int2ip(long ipInt) {
StringBuilder sb = new StringBuilder();
sb.append(ipInt & 0xFF).append(".");
sb.append((ipInt >> 8) & 0xFF).append(".");
sb.append((ipInt >> 16) & 0xFF).append(".");
sb.append((ipInt >> 24) & 0xFF);
return sb.toString();
}
}