python - 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\x02
python?
解决方案
你应该使用binascii.unhexlify()
.
>>> a='0a0a0a02'
>>> b=binascii.unhexlify(a) #Do take care of the imports
>>> inet_ntoa(b)
'10.10.10.2'
推荐阅读
- javascript - 循环间并行,循环内多个异步操作,如何实现?
- c# - UserManager 中没有可见的实现细节
ASP.net Core 中的类 - delphi - FireDAC SQLITE:没有这样的表列:PRAGMA_TABLE_INFO
- javascript - 元素焦点跳到将其设置为空
- python - 在虚拟环境中安装 matplotlib 时出错
- aws-lambda - AWS Java - 从 lambda 承担角色以调用 API 网关
- jsonschema - 如果存在 2 个相同的属性名称,则在使用 Json Schema 验证 Json Payload 时应该引发解析错误?
- javascript - 怎么玩在没有外部库的 React 中?
- cookies - IdentityServer4 访问令牌和 Cookie
- c++ - 如何将中断向量表包装到 std::array 中?