在python中解码十六进制(ASCII)



我正在尝试制作一个与Windowsshell交互的程序,所以我尝试了以下命令:

output = subprocess.run('ipconfig', stdout = subprocess.PIPE)
output.stdout
output = os.popen('ipconfig','r',1).read()

但一些输出(俄语(以十六进制 (ASCII( 表示:

Wireless LAN adapter x81xa5xe1xafxe0xaexa2xaexa4xadxa0xef xe1xa5xe2xec 4:

应该是

Wireless LAN adapter Беспроводная сеть 4:

我需要所有输出信息都是文本。

顺便说一句,当我在写入模式下使用os.popen('ipconfig', 'w'(时,输出是正确的,没有十六进制值,只有文本,但我无法将其保存为整数。

有些已经问过的问题,我发现...

哪种编码使用 \x(反斜杠 x(前缀?

在 Python 3 中解码十六进制字符串

谢谢4个帮助!

试试这个

output.decode('cp866')

子进程的输出应该是一个bytes对象(在 Python 3 中(,使用您的示例:

b'Wireless LAN adapter x81xa5xe1xafxe0xaexa2xaexa4xadxa0xef xe1xa5xe2xec 4:'.decode('cp866')
> 'Wireless LAN adapter Беспроводная сеть 4:'

通常,您需要知道系统正在使用哪种编码,cp866用于俄语,请检查 https://docs.python.org/3/library/codecs.html#standard-encodings

您还可以使用

sys.getdefaultencoding()

如果匹配,您甚至不需要在调用bytes.decode时指定它。

最新更新