Convertire un indirizzo IP in numero decimale in Java
Il perchè dovremmo fare questa operazione non lo so di preciso; magari può esserci utile in qualche applicazione di monitoraggio, o solo per dimostrazione.
Fatto sta che l'ho fatto (proprio in una applicazione di monitoring) e quindi vediamo come si può fare.
Per trasformare un IP in decimale:
public long ipToLong(String ipAddress) {
String[] ipAddressArray = ipAddress.split("\\.");
long result = 0;
for (int i = 0; i < ipAddressArray.length; i++) {
int power = 3 - i;
int ip = Integer.parseInt(ipAddressArray[i]);
result += ip * Math.pow(256, power);
}
return result;
}
Ricordandovi che un indirizzo IP è in base 256.
Per fare invece l'operazione contraria:
public String longToIp(long ip) {
StringBuilder sb = new StringBuilder(15);
for (int i = 0; i < 4; i++) {
sb.insert(0,Long.toString(ip & 0xff));
if (i < 3) {
sb.insert(0,'.');
}
ip = ip >> 8;
}
return sb.toString();
}
Ci sono ovviamente altri modi per farlo.
Ciao!
java stringbuilder ip decimal
Commentami!