【问题标题】:Inverting netmask using commons SubnetUtils.SubnetInfo.getNetmask() in Java在 Java 中使用公共 SubnetUtils.SubnetInfo.getNetmask() 反转网络掩码
【发布时间】:2012-01-10 23:38:59
【问题描述】:

假设我有这个:

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

是否有一种简单的方法可以反转掩码(Cisco ACL 样式)?

eg.: 0.0.0.255

【问题讨论】:

  • 大规模破解,但它应该可以工作:toString().replace("0", "#").replace("255", "0").replace("#", "255");
  • 没有。不完全确定您的要求。在这种情况下,为什么不拆分每个元素并在每个元素上执行(255 - octet)

标签: java apache-commons-net netmask


【解决方案1】:

我提供了一个可能适用于您的情况的代码。但是,也许有一个库以更优化的方式完成它?

    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;
    }

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多