Инвертирование сетевой маски с использованием общих SubnetUtils.SubnetInfo.getNetmask () в Java - PullRequest
2 голосов
/ 02 декабря 2011

Допустим, у меня есть это:

SubnetUtils utils = new SubnetUtils("192.168.1.0/24");
utils.getInfo().getNetmask() // = 255.255.255.0

Есть ли простой способ перевернуть маску (стиль Cisco ACL)?

eg.: 0.0.0.255

1 Ответ

1 голос
/ 02 декабря 2011

Я поставил код, который может работать для вашего случая. Однако, может быть, есть библиотека, которая делает это более оптимизированным способом?

    public String reverseMask(String mask) {
       String[] octets = mask.split("\\.");
       StringBuilder sb = new StringBuilder();
       for (int i=0;i<4;i++) {
         sb.append(String.valueOf(0xFF ^ Integer.valueOf(octets[i])))
           .append(i==3 ? "" : ".");
       }
       return sb;
    }
...