问题描述将一个ip段解析为单个ip集合比如:将这个128.2.2.2-128.5.67.9iprange通过一个parser后解析为[128.2.2.2,128.2.2.3,128.2.2.4,128.2.2.5,128.2.2.6,...,128.3.26.255,...,128.5.67.8,128.5.67.9]请问怎么实现这个parser?谢谢
2 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
思路,IP就是数字,IP段就是一段数字,现将IP字符串转换成十进制数字,遍历再转换成IP字符串letipStr="128.2.2.2-128.5.67.9";letSTEP=8,PART_NUM=4;//结果letips=parseIptoArray(ipStr)console.log(ips)console.log(ips[0])console.log(ips[ips.length-1])//IP段转换成IP数组functionparseIptoArray(ipStr){letrange=ipStr.split('-').map(v=>ipToInt(v))returnnewArray(range[1]-range[0]+1).fill(range[0]).map((v,i)=>intToIp(v+i))}//将字符串IP转换成int类型数据functionipToInt(ip){letres=ip.split('.').map(v=>(+v).toString(2).padStart(STEP,0)).reduce((sum,cur)=>sum+=cur,'')returnparseInt(res,2)}//将int类型的数据转换成ip类型字符串functionintToIp(vuale){letbinary=vuale.toString(2)returnnewArray(PART_NUM).fill(0).map((v,i)=>parseInt(binary.substring(i*STEP,(i+1)*STEP),2)).join('.');}
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
大致思路把128.2.2.2拆成4个数?然后从最后2开始累加,逢255进1直到这四个数分别等于128.5.67.9拆分的四个数为止,目前只想到这个
添加回答
举报
0/150
提交
取消
