python中init_ntoa的十六进制字符串

时间:2018-09-09 06:32:41

标签: python string

我有一个字符串

'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

1 个答案:

答案 0 :(得分:2)

您应该使用binascii.unhexlify()

>>> a='0a0a0a02'
>>> b=binascii.unhexlify(a) #Do take care of the imports
>>> inet_ntoa(b)
'10.10.10.2'