Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.74 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. class IPv4 {
  4.     private StringBuilder mask, network, broadcast, binaryIP;
  5.  
  6.     private IPv4(String ip, int masklen) {
  7.         mask = new StringBuilder();
  8.         network = new StringBuilder();
  9.         broadcast = new StringBuilder();
  10.         binaryIP = this.binaryConversion(ip.split("\\."));
  11.         for(int i = 0; i < 32; i++) {
  12.             if (i < masklen) mask.append(1);
  13.             else mask.append(0);
  14.             if(mask.charAt(i) == '1' && binaryIP.charAt(i) == '1') network.append(1);
  15.             else network.append(0);
  16.             if (i < masklen) broadcast.append(network.charAt(i));
  17.             else broadcast.append(1);
  18.         }
  19.     }
  20.  
  21.     private void printOut(StringBuilder str) {
  22.         for(int i = 0; i < 4; i++) {
  23.             System.out.print(str.substring(i*8, (i+1)*8) + '.');
  24.             if (i != 3) System.out.print('.');
  25.         }
  26.         System.out.print(" / " + decimalConversion(str));
  27.     }
  28.  
  29.     private StringBuilder decimalConversion(StringBuilder str) {
  30.         StringBuilder decimal = new StringBuilder();
  31.         for(int i = 0; i < 4; i++) {
  32.             decimal.append(Integer.parseInt(str.substring(i*8, (i+1)*8), 2));
  33.             if (i != 3) decimal.append('.');
  34.         }
  35.         return decimal;
  36.     }
  37.  
  38.     private StringBuilder binaryConversion(String[] decimal) {
  39.         if(decimal.length != 4) throw new RuntimeException("Invalid IPv4!");
  40.         StringBuilder binary = new StringBuilder();
  41.         for (String string : decimal) {
  42.             int octet = Integer.parseInt(string);
  43.             if(octet < 0 || octet > 255) throw new RuntimeException("Invalid IPv4!");
  44.             StringBuilder binaryOctet = new StringBuilder(Integer.toBinaryString(octet));
  45.             while (binaryOctet.length() < 8)
  46.                 binaryOctet.insert(0, "0");
  47.             binary.append(binaryOctet.toString());
  48.         }
  49.         return binary;
  50.     }
  51.  
  52.     public static void main(String[] args) {
  53.         Scanner in = new Scanner(System.in);
  54.         System.out.println("Please enter an IPv4 address in dot-decimal notation:");
  55.         String ip = in.nextLine();
  56.         System.out.println("Please enter a mask length:");
  57.         int masklen = Integer.parseInt(in.nextLine());
  58.         if(masklen < 1 || masklen > 31) throw new RuntimeException("Invalid mask length!");
  59.         IPv4 IP = new IPv4(ip, masklen);
  60.         System.out.println("\nAddresses in binary / dot-decimal notation:");
  61.         System.out.print("\nIP: ");
  62.         IP.printOut(IP.binaryIP);
  63.         System.out.print("\nMask: ");
  64.         IP.printOut(IP.mask);
  65.         System.out.print("\nNetwork: ");
  66.         IP.printOut(IP.network);
  67.         System.out.print("\nBroadcast: ");
  68.         IP.printOut(IP.broadcast);
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement