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

标签 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));

如有任何帮助,我们将不胜感激)

最佳答案

试试这个:

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

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

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

这以不同的方式执行相同的操作:创建 $input 1,然后将它们移至“顶部位置”。

关于php - 如何将位掩码前缀转换为点分十进制表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567415/

相关文章:

php - PHP PDO (MySQL) 中的 SSL 支持如何工作?

PHP 5.4 500 内部服务器错误,display_errors 关闭

php - 如何在不使用 ajax 刷新页面的情况下向现有对话添加新行?

php - 使用 PHP 触发 jQuery 函数

php - 无法在 laravel 项目的文件中加载 FFMpeg

php - 转义多个字符串的好习惯

php - 损坏的文件图标从数据库 php 和 mysql 中检索图像

php - 使用 PHP 在 URL 中获取名称

php - 在 Wordpress 中将变量 php 传递给 css 的正确方法

php - 下拉菜单不会横向