根据ip/掩码格式地址段得到起始地址和结束地址
2016-08-08 17:23
615 查看
需求:给出ip/掩码的形式,求出起始地址和结束地址,例如6.61.252.0/24的起始地址为6.61.252.1,结束地址为6.61.252.254。
代码:因为我是在页面做处理,所以写的是js代码
1、计算起始地址
传入的参数第一个为ip,比如例子中的6.61.252.0。第二个参数为掩码的ip格式,例子中给出的是整数形式,需要进行转换,转换代码见下面
2、计算结束地址
3、获取主机数
4、将整数形式的掩码转换成ip格式
代码:因为我是在页面做处理,所以写的是js代码
1、计算起始地址
传入的参数第一个为ip,比如例子中的6.61.252.0。第二个参数为掩码的ip格式,例子中给出的是整数形式,需要进行转换,转换代码见下面
/** * 计算子网起始地址(不包括网络地址) * */ function getLowAddr(ip, netMask){ var lowAddr = ""; var ipArray = new Array(); var netMaskArray = new Array(); // I参数不正确 if (4 != ip.split(".").length || "" == netMask) { return ""; } for (var i = 0; i < 4; i++) { ipArray[i] = ip.split(".")[i]; netMaskArray[i] = netMask.split(".")[i]; if (ipArray[i] > 255 || ipArray[i] < 0 || netMaskArray[i] > 255 && netMaskArray[i] < 0) { return ""; } ipArray[i] = ipArray[i] & netMaskArray[i]; } // 构造最小地址 for (var i = 0; i < 4; i++) { if(i == 3){ ipArray[i] = ipArray[i] + 1; } if ("" == lowAddr){ lowAddr +=ipArray[i]; } else{ lowAddr += "." + ipArray[i]; } } return lowAddr; }
2、计算结束地址
/** * 计算子网终止地址(不包括广播地址) */ function getHighAddr(ip,netMask){ var lowAddr = getLowAddr(ip,netMask); var hostNumber = getHostNumber(netMask); if("" == lowAddr || hostNumber == 0){ return ""; } var lowAddrArray = new Array(); for(var i = 0; i < 4; i++){ lowAddrArray[i] = lowAddr.split(".")[i]; if(i == 3){ lowAddrArray[i] = Number(lowAddrArray[i] - 1); } } lowAddrArray[3] = lowAddrArray[3] + Number(hostNumber - 1); //alert(lowAddrArray[3]); if(lowAddrArray[3] > 255){ var k = parseInt(lowAddrArray[3] / 256); //alert(k); lowAddrArray[3] = lowAddrArray[3] % 256; //alert(lowAddrArray[3]); lowAddrArray[2] = Number(lowAddrArray[2]) + Number(k); //alert(lowAddrArray[2]); if(lowAddrArray[2] > 255){ k = parseInt(lowAddrArray[2] / 256); lowAddrArray[2] = lowAddrArray[2] % 256; lowAddrArray[1] = Number(lowAddrArray[1]) + Number(k); if(lowAddrArray[1] > 255){ k = parseInt(lowAddrArray[1] / 256); lowAddrArray[1] = lowAddrArray[1] % 256; lowAddrArray[0] = Number(lowAddrArray[0]) + Number(k); } } } var highAddr = ""; for(var i = 0; i < 4; i++){ if(i == 3){ lowAddrArray[i] = lowAddrArray[i] - 1; } if("" == highAddr){ highAddr = lowAddrArray[i]; }else{ highAddr += "." + lowAddrArray[i]; } } return highAddr; }
3、获取主机数
/** * 获取主机数 * * @param netMask * @returns {Number} */ function getHostNumber(netMask){ var hostNumber = 0; var netMaskArray = new Array(); for(var i = 0; i < 4; i++){ netMaskArray[i] = netMask.split(".")[i]; if(netMaskArray[i] < 255){ hostNumber = Math.pow(256,3-i) * (256 - netMaskArray[i]); break; } } return hostNumber; }
4、将整数形式的掩码转换成ip格式
/** * 转换掩码的格式 */ function getNetMask(inetMask){ var netMask = ""; if(inetMask > 32){ return netMask; } //子网掩码为1占了几个字节 var num1 = parseInt(inetMask / 8); //子网掩码的补位位数 var num2 = inetMask % 8; var array = new Array(); for(var i = 0; i < num1; i++){ array[i] = 255; } for(var i = num1; i < 4; i++){ array[i] = 0; } for(var i = 0; i < num2; num2--){ array[num1] += Math.pow(2,8-num2); } netMask = array[0] + "." + array[1] + "." + array[2] + "." + array[3]; return netMask; }
相关文章推荐
- JAVA代码根据IP/掩码位数格式地址段得到起始地址和结束地址,可用IP数量,掩码
- 使用php根据起始ip地址和掩码 计算广播地址(网段结束地址)
- 批处理之输入起始Ip和结束Ip得到中间的Ip
- 报表优化-------根据IP地址对比起始IP和结束IP找到相应的地域(判断两个IP地址)
- 根据起始IP和结束IP输出指定范围的IP
- datepicker根据起始日期加月份得到结束日期
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
- java获取远端ip并根据ip得到详细地址信息
- 如何通过一个IP和子网掩码得到网络地址和广播地址
- asp根据ip得到地址信息
- 得到本机IP非127.0.0.1地址的方法
- C#实现得到本机IP以及网关地址
- .net 获取当前周及根据年和周获取起始结束时间
- C#实现根据IP 查找真实地址
- 根据文献的题目直接得到参考文献格式
- 无法得到 IP 地址 assigned ip: failed
- 如何根据用户IP得到用户所在位置。
- 根据网卡名获取IP地址,以及掩码地址
- Java根据IP获取地址
- [SVG] 根据SVG椭圆弧路径参数计算中心点坐标、起始角度、结束角度的Javascript函数