zoukankan      html  css  js  c++  java
  • py处理网段转化模块

    def countBit(countNum,bit):
        giveNum="0"*(bit-len(bin(countNum)[2:]))+bin(countNum)[2:]
        return  giveNum
    
    #将ip转十进制
    def minIp(ip):
        value = countBit(int(ip.split('.')[0]),8) + countBit(int(ip.split('.')[1]),8)+ countBit(int(ip.split('.')[2]),8)+ countBit(int(ip.split('.')[3]),8)
        return int(value,2)
    
    def net(n):
        ip1 =  n.split('/')[0]
        mask1 = int(n.split('/')[1])
        if mask1 == 32:
            minip = ip1
            maxip = ip1
    
        elif mask1 > 24:
            k = int(ip1.split('.')[-1])
            dels = 8-(mask1 - 24)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str1
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str2
    
    
        elif mask1 == 24:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+'255'
        elif mask1 > 16 and mask1 < 24:
            k = int(ip1.split('.')[2])
            dels = 8-(mask1 - 16)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str1+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str2+'.'+'255'
        elif mask1 == 16:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'255'+'.'+'255'
    
        elif mask1 > 8 and mask1 < 16:
            k = int(ip1.split('.')[1])
            dels = 8-(mask1 - 8)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+str1+'.'+'0'+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+str2+'.'+'255'+'.'+'255'
        elif mask1 == 8:
            minip = ip1.split('.')[0]+'.'+'0'+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+'255'+'.'+'255'+'.'+'255'
        elif mask1 > 0 and mask1 < 8:
            k = int(ip1.split('.')[0])
            dels = 8-(mask1 - 0)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = str1+'.'+'0'+'.'+'0'+'.'+'0'
            maxip = str2+'.'+'255'+'.'+'255'+'.'+'255'
    
        elif mask1 == 0:
            minip = '0.0.0.0'
            maxip = '255.255.255.255'
        else:
            print 'bad mask!'
    
        return [minIp(minip),minIp(maxip)]  #转化整型

     调用方式 net(10.2.2.0/24)

    可以封装成一个类,没时间,so~~

  • 相关阅读:
    个人学习分布式专题(四)分布式服务的基础之网络通信
    个人学习分布式专题(二)分布式服务治理之分布式协调技术Zookeeper
    个人学习分布式专题(二)分布式服务治理之Dubbo框架
    python学习---50行代码实现图片转字符画2
    python学习---50行代码实现图片转字符画1
    Nginx学习
    个人学习分布式专题(一)大型分布式应用架构基础
    基于dubbo的分布式系统(一)安装docker
    JMS学习(一)
    许大神- xulinbo xulingbo 分享
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/6826061.html
Copyright © 2011-2022 走看看