20130428【Java】ネットワークアドレスを算出する
お題
IPアドレスとサブネットマスクからネットワークアドレスを算出する。
ソース
import java.util.*;
public class SubnetSample {
public static void main(String[] args) {
// サブネットマスク[255 0 0 0]をセット
BitSet subnet = new BitSet(32);
subnet.set(24, 32);
System.out.print("サブネットマスク===>");
IPCreator.getIP(subnet);
// IPアドレス[7 128 0 0]をセット
BitSet ip = new BitSet(32);
ip.set(23,27);
System.out.print("IPアドレス===>");
IPCreator.getIP(ip);
// ネットワークアドレスを計算
ip.and(subnet);
// ネットワークアドレスを表示
System.out.print("ネットワークアドレス===>");
IPCreator.getIP(ip);
}
}
========
import java.util.*;
public class IPCreator {
public static void getIP(BitSet bs){
int result = 0;
for(int i=31; i >= 0; i--){
if(bs.get(i)){
result += Math.pow(2, i%8);
}
if(i%8 == 0) {
System.out.print(result + " ");
result = 0;
}
}
System.out.println();
}
}
実行結果
サブネットマスク===>255 0 0 0
IPアドレス===>7 128 0 0
ネットワークアドレス===>7 0 0 0