在网上看到的一片文章,链接如下:
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地址的思路同上,只是做一下逆向操作