Convertire un indirizzo IP in numero decimale in Java

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!