ipv4数字转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liaoyanyunde/article/details/82868054
#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')

猜你喜欢

转载自blog.csdn.net/liaoyanyunde/article/details/82868054