mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
59 lines
1.9 KiB
Java
59 lines
1.9 KiB
Java
package com.thealgorithms.conversions;
|
|
|
|
/**
|
|
* Converts an IPv4 address to its binary equivalent and vice-versa.
|
|
* IP to Binary: Converts an IPv4 address to its binary equivalent.
|
|
* Example: 127.3.4.5 -> 01111111.00000011.00000100.00000101
|
|
*
|
|
* Binary to IP: Converts a binary equivalent to an IPv4 address.
|
|
* Example: 01111111.00000011.00000100.00000101 -> 127.3.4.5
|
|
*
|
|
* @author Hardvan
|
|
*/
|
|
public final class IPConverter {
|
|
private IPConverter() {
|
|
}
|
|
|
|
/**
|
|
* Converts an IPv4 address to its binary equivalent.
|
|
* @param ip The IPv4 address to convert.
|
|
* @return The binary equivalent of the IPv4 address.
|
|
*/
|
|
public static String ipToBinary(String ip) {
|
|
StringBuilder binary = new StringBuilder();
|
|
for (String octet : ip.split("\\.")) {
|
|
binary.append(octetToBinary(Integer.parseInt(octet))).append(".");
|
|
}
|
|
return binary.substring(0, binary.length() - 1);
|
|
}
|
|
|
|
/**
|
|
* Converts a single octet to its 8-bit binary representation.
|
|
* @param octet The octet to convert (0-255).
|
|
* @return The 8-bit binary representation as a String.
|
|
*/
|
|
private static String octetToBinary(int octet) {
|
|
char[] binary = {'0', '0', '0', '0', '0', '0', '0', '0'};
|
|
for (int i = 7; i >= 0; i--) {
|
|
if ((octet & 1) == 1) {
|
|
binary[i] = '1';
|
|
}
|
|
octet >>>= 1;
|
|
}
|
|
return new String(binary);
|
|
}
|
|
|
|
/**
|
|
* Converts a binary equivalent to an IPv4 address.
|
|
* @param binary The binary equivalent to convert.
|
|
* @return The IPv4 address of the binary equivalent.
|
|
*/
|
|
public static String binaryToIP(String binary) {
|
|
StringBuilder ip = new StringBuilder();
|
|
for (String octet : binary.split("\\.")) {
|
|
ip.append(Integer.parseInt(octet, 2)).append(".");
|
|
}
|
|
return ip.substring(0, ip.length() - 1);
|
|
}
|
|
}
|