【python】点分十进制ip与数字互转

来源:http://www.cnblogs.com/vovlie/archive/2012/10/17/2727029.html

 

利用lambda表达式,非常简洁

int_to_ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
ip_to_int = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])

 

int to ip的逻辑:

点分十进制,每一个部分都代表8位2进制数, 那么求最高位的时候, 只需要将x/(2^8^3)即可,次高位就是(x/(2^8^2))%(2^8),以此类推

 

ip to int的逻辑:

跟上面反过来, 比如"1.2.3.4"就是 1*2^8^3+2*2^8^2+3*2^8^1+4*2^8^0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值