我想用固定值增加一个ip地址.
确切地说,这正是我想要实现的,我有一个ip地址说,192.168.0.3我想增加它1会导致192.168.0.4甚至固定值,x以便它将增加我的IP地址的数字.所以,我可以像主持人一样192.168.0.3+x.
我只是想知道这个转换是否已存在任何模块.
我试过socket.inet_aton,然后socket.inet_ntoa,但我不知道如何正常工作.需要一些帮助或建议.
jfs*_*jfs 11
在Python 3中:
>>> import ipaddress
>>> ipaddress.ip_address('192.168.0.4') # accept both IPv4 and IPv6 addresses
IPv4Address('192.168.0.4')
>>> int(_)
3232235524
>>> ipaddress.ip_address('192.168.0.4') + 256
IPv4Address('192.168.1.4')
Run Code Online (Sandbox Code Playgroud)
相反:
>>> ipaddress.ip_address(3232235524)
IPv4Address('192.168.0.4')
>>> str(_)
'192.168.0.4'
>>> ipaddress.ip_address('192.168.0.4') -1
IPv4Address('192.168.0.3')
Run Code Online (Sandbox Code Playgroud)
您可以使用struct模块解压缩结果,inet_aton()例如,
import struct, socket
# x.x.x.x string -> integer
ip2int = lambda ipstr: struct.unpack('!I', socket.inet_aton(ipstr))[0]
print(ip2int("192.168.0.4"))
# -> 3232235524
Run Code Online (Sandbox Code Playgroud)
相反:
int2ip = lambda n: socket.inet_ntoa(struct.pack('!I', n))
print(int2ip(3232235525))
# -> 192.168.0.5
Run Code Online (Sandbox Code Playgroud)
有一个模块可以让这个任务和其他任务变得非常简单:pip install iptools.
In [1]: import iptools
In [3]: iptools.ip2long('127.0.0.1')
Out[3]: 2130706433
In [4]: p = iptools.ip2long('127.0.0.1') + 1
In [6]: iptools.long2ip(p)
Out[6]: '127.0.0.2'
Run Code Online (Sandbox Code Playgroud)
从python 3.4开始:
>>> import ipaddress
>>> a = ipaddress.IPv4Address('192.168.0.1')
>>> a+500
IPv4Address('192.168.1.245')
>>> a = ipaddress.IPv6Address('2001:1900:2254:206a::50:0')
>>> a+200
IPv6Address('2001:1900:2254:206a::50:c8')
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14908 次 |
| 最近记录: |