如何将位掩码前缀转换为点分十进制表示法

时间:2014-07-04 05:42:56

标签: php

输入为32(32位),对应于255.255.255.255,

或16至255.255.0.0

如何使用php将掩码前缀转换为点分十进制表示法?

我已经尝试了以下方法,但它没有成功:

$max_ip_str1 = substr(0, $input[1]).str_repeat('1', $input[1]);#$input[1] corresponds to mask
$mask = long2ip(bindec($max_ip_str1));

任何帮助将不胜感激)

2 个答案:

答案 0 :(得分:2)

试试这个:

$mask = long2ip((1<<32)-(1<<(32-$input)));

即2 ^ 32 - 2 ^ X,其中X是不应为零的位数。然后将剩下的内容转换为虚线形式。

$mask = long2ip(((1<<$input)-1)<<(32-$input));

这样做的方式不同:创建$input 1,然后将它们转移到“顶部位置”。

答案 1 :(得分:0)

如果你的价值是这样修复的。

32  = 255.255.255.255
16  = 255.255.255.255

尝试只使用if语句

if($input == "32")
{
  $mask = "255.255.255.255";
}
相关问题