ip地址与数字之间互换

在网上看到的一片文章,链接如下:

http://www.pythontab.com/html/2015/pythonjichu_0504/949.html,其python实现代码如下:

ip、数字互转


# ip ==> 数字

>>> ip2num = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])

>>> ip2num('192.168.0.1')

3232235521

# 数字 ==> ip # 数字范围[0, 255^4]

>>> num2ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])

>>> num2ip(3232235521)

'192.168.0.1'

思路解析如下:

 利用ip地址的点分十进制格式,依次从右向左取每一个数字(因为数字的取值范围是0-255,所以可以用8位的二进制数表示),最右边的数相当于4位数中的个位数,然后取靠近最右边的两个点号之间的数字,由于这个数字在表示上相当于左移8位,所以其数值需乘以256,以此类推,即可求出ip地址对应的数值.


数值转ip地址的思路同上,只是做一下逆向操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值