Using the standard Java libraries, what is the quickest way to get from the dotted string representation of an IPV4-address ("127.0.0.1"
) to the equivalent integer representation (2130706433
).
And correspondingly, what is the quickest way to invert said operation - going from the integer 2130706433
to the string representation"127.0.0.1"
?
String to int:
int pack(byte[] bytes) { int val = 0; for (int i = 0; i < bytes.length; i++) { val <<= 8; val |= bytes[i] & 0xff; } return val; } pack(InetAddress.getByName(dottedString).getAddress());
Int to string:
byte[] unpack(int bytes) { return new byte[] { (byte)((bytes >>> 24) & 0xff), (byte)((bytes >>> 16) & 0xff), (byte)((bytes >>> 8) & 0xff), (byte)((bytes ) & 0xff) }; } InetAddress.getByAddress(unpack(packedBytes)).getHostAddress()
You can also use the Google Guava InetAddress Class
String ip = "192.168.0.1"; InetAddress addr = InetAddresses.forString(ip); // Convert to int int address = InetAddresses.coerceToInteger(addr); // Back to str String addressStr = InetAddresses.fromInteger(address));
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