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

时间:2013-10-17 14:31:52

标签: python string hex

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

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

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

1 个答案:

答案 0 :(得分:5)

使用socket.inet_aton

>>> import socket
>>> socket.inet_aton('1.2.3.4')
'\x01\x02\x03\x04'

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

>>> socket.inet_ntoa('\x01\x02\x03\x04')
'1.2.3.4'

<强>更新

在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'