Convertire un indirizzo IP in numero decimale in Java

Mattepuffo's logo
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!


Condividi

Commentami!