javascript IP转CIDR段

本文介绍了如何将IP地址段125.203.96.0-125.203.127.255转换为CIDR格式。通过将IP地址转换为二进制形式,并找出共同前缀来确定CIDR掩码长度,最终得出CIDR表示为125.203.96.0/19。

CIDR表示的IP地址段解析
比较常见的/8掩码是A类,/16掩码是B类,/24掩码是C类,这些事比较常见的,不太常见的/12、/18、/25掩码就是我们今天要说的CIDR无类别域间路由。

举例:IP号段是125.203.96.0 - 125.203.127.255,转换成CIDR格式是多少?
解析:转换为CIDR就是找相同部分,把十进制数转换成二进制数,例如125.203.96.0 - 125.203.127.255,相同的忽略不计,把不同的数字转换成二进制,然后找相同的位数:

IP号段:125.203.96.0 - 125.203.127.255
转成二进制:125.203.0110 0000.0000 0000 - 125.203.0111 1111.1111 1111

function repair(n,v){
    let str='';
    for(let i=0;i<(n-v.toString().length);i++){str+='0'}
    return `${str}${v}`
}
function iptoString(str){
    let arr=str.split(".");
    let strs="";
    for(let i=0;i<arr.length;i++){
        let pt2=parseInt(arr[i]).toString(2);
        let s=repair(8,pt2);
        strs+=s
    }
    return strs;
}

function ipToCIDR(ipA,ipB){
    let nn=0;
    let A=iptoString(ipA);
    let B=iptoString(ipB);
    console.log(`${A}=${ipA}`);
    console.log(`${B}=${ipB}`);
    for(let i=0;i<A.length;i++){
        if(A[i] === B[i]){
            nn++;
        }else{
            break;
        }
    }
    return `${ipA}/${nn}`;
}
let doc=ipToCIDR('125.203.96.0','125.203.127.255')
console.log(doc);

输出结果是:
01111101110010110110000000000000=125.203.96.0
01111101110010110111111111111111=125.203.127.255
125.203.96.0/19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值