java实现子网掩码转换为网络标识位

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

 

子网掩码的作用

  通过 IP 地址的二进制与子网掩码的二进制进行与运算,确定某个设备的网络地址和主机号,也就是说通过子网掩码分辨一个网络的网络部分和主机部分。子网掩码一旦设置,网络地址和主机地址就固定了。子网一个最显著的特征就是具有子网掩码。与IP地址相同,子网掩码的长度也是32位,也可以使用十进制的形式。例如,为二进制形式的子网掩码:1111 1111、1111 1111、1111 1111、0000 0000,采用十进制的形式为:255.255.255.0。

 

网掩码的表示方法  子网掩码通常有以下2种格式的表示方法:

  1. 通过与IP地址格式相同的点分十进制表示

  如:255.0.0.0 或 255.255.255.128

  2. 在IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度

  如:192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0

 

 

StringBuffer sbf;
        String str;
        String strip= "255.255.255.0";   //子网掩码
        int inetmask=0,count=0;       //子网掩码缩写代码
        def ipList=strip.split('//.');
         for(int n=0;n<ipList.size();n++)
           {

                    sbf = toBin(Integer.parseInt(ipList[n]));
                    str=sbf.reverse().toString();
                    println(ipList[n]+"---"+str);

                   //统计2进制字符串中1的个数
                   count=0
                   for(int i=0;i<str.length();i++){
                       i=str.indexOf('1',i);  //查找 字符'1'出现的位置                         
                       if(i==-1){break;}
                       count++;  //统计字符出现次数
                  }
                 inetmask+=count;
 
            }
       println "子网掩码缩写代码:"+inetmask;


  StringBuffer toBin(int x)
     {
       StringBuffer result=new StringBuffer();
        result.append(x%2);
        x/=2;
        while(x>0){
          result.append(x%2);
          x/=2;
        }
        return result;
     }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值