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

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

原理简述

ip结构数字ip
000.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值