拿到一个电信网通路由的网段表,其中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 地址范围的转换相关推荐

  1. CCNA1:网路基础、TCP/IP、OSI、IPv4、子网划分、数据封装

    文章目录 CCNA1:网络基础.TCP/IP.OSI.IPv4.子网划分.数据封装 一.TCP/IP协议栈.OSI七层参考模型: 1.OSI七层参考模型: 2.TCP/IP四层参考模型: 3.比较: ...

  2. 网络基础----子网,IP和网段划分

    1.什么是网络划分,网络划分的目的是为了什么? 在回答这两个问题之前,我们需要知道ip地址的概念,ip地址一共有32比特位,它由两部分构成,网络号和主机号. 两个部分组合在一起就构成了一台主机的地址, ...

  3. java 代理ip工具类_Java基础之java处理ip的工具类

    java处理ip的工具类,包括把long类型的Ip转为一般Ip类型.把xx.xx.xx.xx类型的转为long类型.根据掩码位获取掩码.根据 ip/掩码位 计算IP段的起始IP.根据 ip/掩码位 计 ...

  4. IP地址与二进制转换

    IP地址与二进制转换 子网掩码 子网掩码是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.它的作用是将IP地址分为网络地址和主机地址两部分.子网掩码可以确定子网 ...

  5. 怎么做个修改ip服务器,自己做一个服务器怎么固定ip地址

    自己做一个服务器怎么固定ip地址 内容精选 换一换 客户端IP指的是访问者(用户设备)的IP地址.在Web应用开发中,通常需要获取客户端真实的IP地址.例如,投票系统为了防止刷票,需要通过获取客户端真 ...

  6. 计算机网络 王道考研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 私有 ...

  7. 网络层—— 转发(IP、ARP、DCHP、ICMP、网络层编址、网络地址转换)

    本文主要介绍以下几方面的知识: 网络层功能概述 IP数据报 网络层编址(基本编址形式.子网划分&子网掩码.CIDR) 网络地址转换NAT ARP协议 DCHP协议 ICMP协议 IPV6 1. ...

  8. 总结ip分类以及每个分类可以分配的IP数量

    网络中的每一个主机或路由器至少有一个ip地址: 在Internet中不允许有两个设备具有同样的IP地址: IP地址组成:它们可唯一标识 IP 网络中的每台设备 ,每台主机(计算机.网络设备.外围设备) ...

  9. linux ip命令_如何在Linux上使用ip命令

    linux ip命令 Fatmawati Achmad Zaenuri/Shutterstock Fatmawati Achmad Zaenuri / Shutterstock You can con ...

  10. 计算机网络实验ip数据报转发,计算机网络实验报告三网际协议IP.doc

    计算机网络实验报告三网际协议IP 计算机网络实验报告 实验题目:网际协议IP学号:201200301106日期:2014/11/20班级:2012级软工3班姓名: 李凯峰实验目的: 1.掌握IP数据报 ...

最新文章

  1. Properties类读写配置文件
  2. Flutter(一):用BottomNavigationBar实现常规的底部导航
  3. python培训中心-吴中区Python培训中心
  4. .NET C# 发送邮件内容嵌入图片
  5. 本地方法(JNI)——访问数组元素+错误处理
  6. 迷宫搜索问题最短路_【算法常用模板】总结(更新中)
  7. linux用户、用户组 增删改查专栏
  8. (3)插入排序之一 直接插入排序
  9. 为什么python不需要编译_为什么我用Go写机器学习部署平台,而偏偏不用Python?...
  10. cakebrew mysql启动_辅助Homebrew的两大利器Cakebrew LaunchRocket
  11. 【思维】javascript选择排序
  12. 信息: 开始协议处理句柄[http-nio-8080]_你必须要知道的HTTP协议原理
  13. Linux拷贝文件夹
  14. tpc1061ti使用说明_昆仑通态连打印机样例说明
  15. zTree 树形中的搜索定位节点
  16. 【Unity 资源分享】☀️ | Unity 超好看的 精品四季蔚蓝自然场景模型 ,让我们离二次元开发更近一步!
  17. 如何跨网络远程操作另一台计算机,如何远程控制另一台计算机?
  18. PAT 1082 射击比赛 python
  19. 计算广告-商业化体系
  20. Python 神器,自动识别文字中的省市区并绘图

热门文章

  1. 夜间灯光遥感数据下载方法
  2. 【HDU_P3530】Subsequence
  3. 好用的蓝牙管理工具推荐,帮您优雅管理蓝牙功能!
  4. 地图转换|用arcgis 将cad转kmz
  5. pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
  6. axis wsdl2java_AXIS1.4 客户端 wsdl2java 使用方法
  7. 油猴脚本管理器使用指南
  8. android 编程w3c,w3cschool手机版app下载-w3cschool-编程学院 安卓版v3.4.73-PC6安卓网
  9. 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
  10. Vivado2018.1安装教程