首页 > 解决方案 > python中init_ntoa的字符串到十六进制

问题描述

我有一个字符串

'0a0a0a02'

我想将其转换为 IP 地址格式 ( 10.10.10.2)。

我正在使用该函数 -socket.inet_ntoa()在 python 中。问题是 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
>>> 

如何将字符串转换0a0a0a02\x0a\x0a\x0a\x02python?

标签: pythonstring

解决方案


你应该使用binascii.unhexlify().

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

推荐阅读