Skip to content

Commit 5e44f2d

Browse files
committed
feat: Add IPConverter new algorithm with Junit tests
1 parent 4a03f42 commit 5e44f2d

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.thealgorithms.conversions;
2+
3+
/**
4+
* Converts an IPv4 address to its binary equivalent and vice-versa.
5+
* IP to Binary: Converts an IPv4 address to its binary equivalent.
6+
* Example: 127.3.4.5 -> 01111111.00000011.00000100.00000101
7+
*
8+
* Binary to IP: Converts a binary equivalent to an IPv4 address.
9+
* Example: 01111111.00000011.00000100.00000101 -> 127.3.4.5
10+
*
11+
* @author Hardvan
12+
*/
13+
public final class IPConverter {
14+
private IPConverter() {
15+
}
16+
17+
public static String ipToBinary(String ip) {
18+
StringBuilder binary = new StringBuilder();
19+
for (String octet : ip.split("\\.")) {
20+
binary.append(String.format("%08d", Integer.parseInt(Integer.toBinaryString(Integer.parseInt(octet))))).append(".");
21+
}
22+
return binary.substring(0, binary.length() - 1);
23+
}
24+
25+
public static String binaryToIP(String binary) {
26+
StringBuilder ip = new StringBuilder();
27+
for (String octet : binary.split("\\.")) {
28+
ip.append(Integer.parseInt(octet, 2)).append(".");
29+
}
30+
return ip.substring(0, ip.length() - 1);
31+
}
32+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.thealgorithms.conversions;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
public class IPConverterTest {
8+
9+
@Test
10+
public void testIpToBinary() {
11+
assertEquals("11000000.10101000.00000001.00000001", IPConverter.ipToBinary("192.168.1.1"));
12+
assertEquals("01111111.00000011.00000100.00000101", IPConverter.ipToBinary("127.3.4.5"));
13+
}
14+
15+
@Test
16+
public void testBinaryToIP() {
17+
assertEquals("192.168.1.1", IPConverter.binaryToIP("11000000.10101000.00000001.00000001"));
18+
assertEquals("127.3.4.5", IPConverter.binaryToIP("01111111.00000011.00000100.00000101"));
19+
}
20+
}

0 commit comments

Comments
 (0)