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