数字ip和ip的转化(自编版)

it2023-10-30  73

之前转载过一版关于数字ip和ip的转化,但是工作中会遇到负数的形式,所以有没法搞,后来不得已研究了下转化的规律,自己写了一个代码,保证自己的工作效率,今天给大家参考下。

原理简述

ip结构数字ip000.000.000.0000000000000

ip分四段,每段最大数为255,当再加1时,前一段+1,本段变成000 例如:000.000.000.255之后的一个时000.000.001.000 所以数字255对应0.0.0.255 数字256对应0.0.1.0 数字65536对应0.1.0.0 最大数4294967295对应255.255.255.255

至于负数,其实就是正数是相反的 即:-1对应255.255.255.255 -4294967295对应0.0.0.1 所以得到4294967296+(负数)就可得到正数,就可以正常转化了

代码

def IP(x): #""" 完成数字ip到实际ip的转换 # x:需要转化的数字ip(可以是负数,可以是正数) # p1:ip中第一个点的位置(从左往右) # p2:ip中第二个点的位置 # p3:第三个点的位置 # return:返回转化完成的实际ip #""" x=int(x) p1=256*256*256 p2=256*256 p3=256 if x>=0: a=x//p1#ip第一段数字(从左往右) b=(x-(p1*a))//p2#ip第二段数字 c=((x-(p1*a))-(b*p2))//p3#ip第三段数字 d=((x-(p1*a))-(b*p2))%p3#ip第四段数字 else: x1=4294967296+x a=x1//p1#ip第一段数字(从左往右) b=(x1-(p1*a))//p2#ip第二段数字 c=((x1-(p1*a))-(b*p2))//p3#ip第三段数字 d=((x1-(p1*a))-(b*p2))%p3#ip第四段数字 return str(a)+'.'+str(b)+'.'+str(c)+'.'+str(d)
最新回复(0)