我有一个字符串
'0a0a0a02'
我想将其转换为IP地址格式(10.10.10.2
)。
我正在使用python中的功能-socket.inet_ntoa()
。
问题是inet_ntoa()的输入必须为'\x0a\x0a\x0a\x02
'形式。
我尝试使用字符串连接将'\x
'附加到原始字符串,但是没有用。
>>> a = '0a'
>>> b = '\x'+a
ValueError: invalid \x escape
>>> b = '\\x' + a
>>> b
'\\x0a'
>>> b[1:]
'x0a'
>>> b[0:]
'\\x0a'
>>> print(b)
\x0a
>>> b=b+b+b+b
>>> print(b)
\x0a\x0a\x0a\x0a
>>> socket.inet_ntoa(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.error: packed IP wrong length for inet_ntoa
>>>
如何在python中将字符串0a0a0a02
转换为\x0a\x0a\x0a\x02
?
答案 0 :(得分:2)
您应该使用binascii.unhexlify()
。
>>> a='0a0a0a02'
>>> b=binascii.unhexlify(a) #Do take care of the imports
>>> inet_ntoa(b)
'10.10.10.2'