php ip 转,用php进行ip/子网到IP 地址范围的转换
拿到一个电信网通路由的网段表,其中IP的显示形如:
27.8.0.0/13
27.36.0.0/14
27.40.0.0/13
....
由于设备只能用IP地址范围,而非/XX这样子网掩码的形式,因此必须将这些子网地址转换为IP网段范围的形式.
于是..祭出php,很快顺利解决..
程序思路:
0. 将字符串切分成两部分——IP 和 子网掩码(用explode()实现)
1. 转换/XX为xxx.xxx.xxx.xxx形式的子网掩码(用的笨方法,直接switch-case 一一对应即可)
2. 将ip和subnet
mask做按位and操作,这样可以找到主机位全0的网络段地址(其实这部可以忽略,因为这些ip段给的非常标准,基本上都是网络段地址,无需转换)
3. 找到结束地址即广播地址(主机位为全1),方法是首先对subnet
mask做非操作(1换0,0换1),然后做按位或的操作,即可将主机位全置1,获得结束地址
要对IP地址进行操作,先将其转为数字格式会比较好操作,好在php已经提供了函数调用
ip2long()
(PHP 4, PHP 5)
ip2long — Converts a string containing an (IPv4) Internet Protocol
dotted address into a proper address
long2ip
(PHP 4, PHP 5)
long2ip — Converts an (IPv4) Internet network address into a string
in Internet standard dotted format
考虑到用文件整行读取的方式操作比较方便,因此先将得到的网段文件存为txt格式.
下面是代码:
//打开文件
$handle = fopen("d:\\CNC.txt", "r");
if ($handle) {
while
(!feof($handle)) {
$ip = fgets($handle);//用fgets直接一行一行的取
$ip=trim($ip);//消除空格
$ipaddr = explode("/",
$ip);//将IP/网段切分开
$ip=$ipaddr[0];
$mask=$ipaddr[1];
//下面开始将数字掩码转为IP格式的掩码
switch ($mask) {
case
"8":
$mask=ip2long("255.0.0.0");
$bcmask=~$mask;
break;
case
"9":
$mask=ip2long("255.128.0.0");
$bcmask=~$mask;
break;
case
"10":
$mask=ip2long("255.192.0.0");
$bcmask=~$mask;
break;
case
"11":
$mask=ip2long("255.224.0.0");
$bcmask=~$mask;
break;
case
"12":
$mask=ip2long("255.240.0.0");
$bcmask=~$mask;
break;
case
"13":
$mask=ip2long("255.248.0.0");
$bcmask=~$mask;
break;
case
"14":
$mask=ip2long("255.252.0.0");
$bcmask=~$mask;
break;
case
"15":
$mask=ip2long("255.254.0.0");
$bcmask=~$mask;
break;
case
"16":
$mask=ip2long("255.255.0.0");
$bcmask=~$mask;
break;
case
"17":
$mask=ip2long("255.255.128.0");
$bcmask=~$mask;
break;
case
"18":
$mask=ip2long("255.255.192.0");
$bcmask=~$mask;
break;
case
"19":
$mask=ip2long("255.255.224.0");
$bcmask=~$mask;
break;
case
"20":
$mask=ip2long("255.255.240.0");
$bcmask=~$mask;
break;
case
"21":
$mask=ip2long("255.255.248.0");
$bcmask=~$mask;
break;
case
"22":
$mask=ip2long("255.255.252.0");
$bcmask=~$mask;
break;
case
"23":
$mask=ip2long("255.255.254.0");
$bcmask=~$mask;
break;
case
"24":
php ip 转,用php进行ip/子网到IP 地址范围的转换相关推荐
- CCNA1:网路基础、TCP/IP、OSI、IPv4、子网划分、数据封装
文章目录 CCNA1:网络基础.TCP/IP.OSI.IPv4.子网划分.数据封装 一.TCP/IP协议栈.OSI七层参考模型: 1.OSI七层参考模型: 2.TCP/IP四层参考模型: 3.比较: ...
- 网络基础----子网,IP和网段划分
1.什么是网络划分,网络划分的目的是为了什么? 在回答这两个问题之前,我们需要知道ip地址的概念,ip地址一共有32比特位,它由两部分构成,网络号和主机号. 两个部分组合在一起就构成了一台主机的地址, ...
- java 代理ip工具类_Java基础之java处理ip的工具类
java处理ip的工具类,包括把long类型的Ip转为一般Ip类型.把xx.xx.xx.xx类型的转为long类型.根据掩码位获取掩码.根据 ip/掩码位 计算IP段的起始IP.根据 ip/掩码位 计 ...
- IP地址与二进制转换
IP地址与二进制转换 子网掩码 子网掩码是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.它的作用是将IP地址分为网络地址和主机地址两部分.子网掩码可以确定子网 ...
- 怎么做个修改ip服务器,自己做一个服务器怎么固定ip地址
自己做一个服务器怎么固定ip地址 内容精选 换一换 客户端IP指的是访问者(用户设备)的IP地址.在Web应用开发中,通常需要获取客户端真实的IP地址.例如,投票系统为了防止刷票,需要通过获取客户端真 ...
- 计算机网络 王道考研2021 第四章:网络层 -- lPv4地址、私有IP地址、网络地址转换 (NAT)、WAN / LAN
文章目录 1. lPv4地址 1.1 IP地址 1.2 IP编址的历史阶段 1.3 分类的IP地址 1.4 互联网中的IP地址 1.5 特殊lP地址:不能作为主机或者路由器的具体接口标识 1.6 私有 ...
- 网络层—— 转发(IP、ARP、DCHP、ICMP、网络层编址、网络地址转换)
本文主要介绍以下几方面的知识: 网络层功能概述 IP数据报 网络层编址(基本编址形式.子网划分&子网掩码.CIDR) 网络地址转换NAT ARP协议 DCHP协议 ICMP协议 IPV6 1. ...
- 总结ip分类以及每个分类可以分配的IP数量
网络中的每一个主机或路由器至少有一个ip地址: 在Internet中不允许有两个设备具有同样的IP地址: IP地址组成:它们可唯一标识 IP 网络中的每台设备 ,每台主机(计算机.网络设备.外围设备) ...
- linux ip命令_如何在Linux上使用ip命令
linux ip命令 Fatmawati Achmad Zaenuri/Shutterstock Fatmawati Achmad Zaenuri / Shutterstock You can con ...
- 计算机网络实验ip数据报转发,计算机网络实验报告三网际协议IP.doc
计算机网络实验报告三网际协议IP 计算机网络实验报告 实验题目:网际协议IP学号:201200301106日期:2014/11/20班级:2012级软工3班姓名: 李凯峰实验目的: 1.掌握IP数据报 ...
最新文章
- Properties类读写配置文件
- Flutter(一):用BottomNavigationBar实现常规的底部导航
- python培训中心-吴中区Python培训中心
- .NET C# 发送邮件内容嵌入图片
- 本地方法(JNI)——访问数组元素+错误处理
- 迷宫搜索问题最短路_【算法常用模板】总结(更新中)
- linux用户、用户组 增删改查专栏
- (3)插入排序之一 直接插入排序
- 为什么python不需要编译_为什么我用Go写机器学习部署平台,而偏偏不用Python?...
- cakebrew mysql启动_辅助Homebrew的两大利器Cakebrew LaunchRocket
- 【思维】javascript选择排序
- 信息: 开始协议处理句柄[http-nio-8080]_你必须要知道的HTTP协议原理
- Linux拷贝文件夹
- tpc1061ti使用说明_昆仑通态连打印机样例说明
- zTree 树形中的搜索定位节点
- 【Unity 资源分享】☀️ | Unity 超好看的 精品四季蔚蓝自然场景模型 ,让我们离二次元开发更近一步!
- 如何跨网络远程操作另一台计算机,如何远程控制另一台计算机?
- PAT 1082 射击比赛 python
- 计算广告-商业化体系
- Python 神器,自动识别文字中的省市区并绘图
热门文章
- 夜间灯光遥感数据下载方法
- 【HDU_P3530】Subsequence
- 好用的蓝牙管理工具推荐,帮您优雅管理蓝牙功能!
- 地图转换|用arcgis 将cad转kmz
- pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
- axis wsdl2java_AXIS1.4 客户端 wsdl2java 使用方法
- 油猴脚本管理器使用指南
- android 编程w3c,w3cschool手机版app下载-w3cschool-编程学院 安卓版v3.4.73-PC6安卓网
- 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
- Vivado2018.1安装教程