ipv4数字转换

#Ipv4转换为十进制数
def ipv42dec(ipv4):
    if checkipv4(ipv4):
        splits = ipv4.split(".")
        result=0
        if len(splits)==4:
            for i in range(4):
                result+= int(splits[i])*(256**(3-i))
            return str(result)
        else:
            return ""
    else:
        return ""
#校验Ipv4的格式
def checkipv4(ipv4):
    matchobj = re.match(r'^(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))$',ipv4)
    if matchobj:
        return True
    else:
        return False      
#将十进制数转换为ipv4
def dec2ipv4(dec):
    if checkdec(dec) and int(dec)<=4294967295:
        iplist=[]
        num= int(dec)
        for i in range(3):
            num,modnum=divmod(num,256)
            iplist.insert(0,str(modnum))
        iplist.insert(0,str(num))
        return  '.'.join(iplist)
    else:
        return ""
#校验十进制数字
def checkdec(dec):
    matchobj = re.match(r'(0[dD])?[0-9]+$',dec)
    if matchobj:
        return True
    else:
        return False

测试用例

class IPv4MethodsTest(unittest.TestCase):
    def test_ipv42dec(self):
        self.assertEqual(IPNumConvertMethods.ipv42dec('192.69.199.28'),'3225798428')
        self.assertEqual(IPNumConvertMethods.ipv42dec('0.0.0.0'), '0')
        self.assertEqual(IPNumConvertMethods.ipv42dec('255.255.255.255'), '4294967295')
        self.assertEqual(IPNumConvertMethods.ipv42dec('255.255.255'), '')
        self.assertEqual(IPNumConvertMethods.ipv42dec('255.255.255.256'), '')

class DecMethodsTest(unittest.TestCase):
    def test_dec2ipv4(self):
        self.assertEqual(IPNumConvertMethods.dec2ipv4('10'),'0.0.0.10')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值