An IPv4 can have more representations: as string (a.b.c.d) or numerical (as an unsigned int of 32 bits). (Maybe other, but I will ignore them.)
Is there any built in support in Java (8), simple and easy to use, without network access, to convert between these formats?
I need something like this:
long ip = toNumerical("1.2.3.4"); // returns 0x0000000001020304L
String ipv4 = toIPv4(0x0000000001020304L); // returns "1.2.3.4"
If there is no built in such functions in Java, feel free to suggest other solutions.
Thank you
The IP address is a string in the form “A.B.C.D”, where the value of A, B, C, and D may range from 0 to 255. Leading zeros are allowed. The length of A, B, C, or D can't be greater than 3.
Number. intValue() method returns the value of the specified number as an int.
We can use InetAddressValidator class that provides the following validation methods to validate an IPv4 or IPv6 address. isValid(inetAddress) : Returns true if the specified string is a valid IPv4 or IPv6 address. isValidInet4Address(inet4Address) : Returns true if the specified string is a valid IPv4 address.
The can be done using InetAddress
as follows.
//Converts a String that represents an IP to an int.
InetAddress i = InetAddress.getByName(IPString);
int intRepresentation = ByteBuffer.wrap(i.getAddress()).getInt();
//This converts an int representation of ip back to String
i = InetAddress.getByName(String.valueOf(intRepresentation));
String ip = i.getHostAddress();
Heres is a way to Convert IP to Number. I found it a valid way to accomplish the task in Java.
public long ipToLong(String ipAddress) {
String[] ipAddressInArray = ipAddress.split("\\.");
long result = 0;
for (int i = 0; i < ipAddressInArray.length; i++) {
int power = 3 - i;
int ip = Integer.parseInt(ipAddressInArray[i]);
result += ip * Math.pow(256, power);
}
return result;
}
This is also how you would implement it in Scala.
def convertIPToLong(ipAddress: String): Long = {
val ipAddressInArray = ipAddress.split("\\.")
var result = 0L
for (i <- 0 to ipAddressInArray.length-1) {
val power = 3 - i
val ip = ipAddressInArray(i).toInt
val longIP = (ip * Math.pow(256, power)).toLong
result = result +longIP
}
result
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With