将dpkt.IP的IP字符串转换为十六进制

0 python string hex

我想学习使用dpkt的数据包解码器处理.在网站上,我看到了以下示例代码:

>>> from dpkt.ip import IP                            
>>> ip = IP(src='\x01\x02\x03\x04', dst='\x05\x06\x07\x08', p=1)
>>> ...
Run Code Online (Sandbox Code Playgroud)

如何将IP字符串转换'1.2.3.4''\x01\x02\x03\x04'

fal*_*tru 5

用途socket.inet_aton:

>>> import socket
>>> socket.inet_aton('1.2.3.4')
'\x01\x02\x03\x04'
Run Code Online (Sandbox Code Playgroud)

要获得点分十进制,请使用socket.inet_ntoa:

>>> socket.inet_ntoa('\x01\x02\x03\x04')
'1.2.3.4'
Run Code Online (Sandbox Code Playgroud)

UPDATE

在Python 3.3+中,ipaddress.IPv4Address是另一种选择.

>>> import ipaddress
>>> ipaddress.IPv4Address('1.2.3.4').packed
b'\x01\x02\x03\x04'
>>> ipaddress.IPv4Address(b'\x01\x02\x03\x04')
IPv4Address('1.2.3.4')
>>> str(ipaddress.IPv4Address(b'\x01\x02\x03\x04'))
'1.2.3.4'
Run Code Online (Sandbox Code Playgroud)