php cidr前缀为netmask

| 我正在寻找将cidr前缀(例如/ 28)转换为网络掩码(例如255.255.255.240)的方法,却没有找到用于此功能的函数,php中是否存在?如果没有,我将如何去做?
已邀请:
我写了一个包含执行此操作的方法的类。
function CIDRtoMask($int) {
    return long2ip(-1 << (32 - (int)$int));
}
我在snipplr发布了整个课程。
范例1: 函数cidr2NetmaskAddr()
  function cidr2NetmaskAddr ($cidr) {

    $ta = substr ($cidr, strpos ($cidr, \'/\') + 1) * 1;
    $netmask = str_split (str_pad (str_pad (\'\', $ta, \'1\'), 32, \'0\'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join (\'.\', $netmask);

  }
用法
  echo cidr2NetmaskAddr (\'194.234.213.0/28\');
输出量 255.255.255.240 范例2: 函数createNetmaskAddr()
  function createNetmaskAddr ($bitcount) {

    $netmask = str_split (str_pad (str_pad (\'\', $bitcount, \'1\'), 32, \'0\'), 8);

    foreach ($netmask as &$element)
      $element = bindec ($element);

    return join (\'.\', $netmask);

  }
用法
  echo createNetmaskAddr (28);
输出量 255.255.255.240

要回复问题请先登录注册