将IP地址转换为十六进制

时间:2015-08-19 03:41:53

标签: python

如何使用python进行以下转换?

"172.1.3.1" >> "\xAC\x01\x03\x01"

目前我可以进行以下转换:

"172.1.3.1" >> "AC010301"

但是我要求我的结果具有十六进制转义字符,如上所示。

2 个答案:

答案 0 :(得分:3)

如果您使用的是Python 2,则可以使用socket模块。

>>> import socket
>>> socket.inet_aton("172.1.3.1")
'\xac\x01\x03\x01'

这利用inet_aton

  

将IPv4地址从点分四字符串格式(例如,'123.45.67.89')转换为32位压缩二进制格式,字符串长度为四个字符。

如果您使用的是Python 3:

>>> import ipaddress
>>> ipaddress.IPv4Address("172.1.3.1").packed
b'\xac\x01\x03\x01'

答案 1 :(得分:2)

>>> socket.inet_aton('172.1.3.1')
'\xac\x01\x03\x01'
>>> struct.pack('>I', IPy.IP('172.1.3.1').int())
'\xac\x01\x03\x01'