mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-06 00:54:32 +08:00
feat: Add IPConverter
new algorithm with Junit tests (#5750)
This commit is contained in:
58
src/main/java/com/thealgorithms/conversions/IPConverter.java
Normal file
58
src/main/java/com/thealgorithms/conversions/IPConverter.java
Normal file
@ -0,0 +1,58 @@
|
||||
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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user