有大佬遇到过这个问题吗:js 解析ip段为单个ip集合

问题描述
将一个ip段解析为单个ip集合
比如:
将这个128.2.2.2-128.5.67.9
iprange通过一个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?谢谢
胡说叔叔
浏览 455回答 2
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

大致思路把128.2.2.2拆成4个数?然后从最后2开始累加,逢255进1直到这四个数分别等于128.5.67.9拆分的四个数为止,目前只想到这个
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript