簡體   English   中英

在python中解碼十六進制(ASCII)

[英]Decoding hex (ASCII) in python

我正在嘗試制作一個與Windows shell 交互的程序,所以我嘗試了以下命令:

output = subprocess.run('ipconfig', stdout = subprocess.PIPE)
output.stdout

output = os.popen('ipconfig','r',1).read()

但一些輸出(俄語)以十六進制(ASCII)表示:

Wireless LAN adapter \x81\xa5\xe1\xaf\xe0\xae\xa2\xae\xa4\xad\xa0\xef \xe1\xa5\xe2\xec 4:

應該

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

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

順便說一句,當我在寫模式下使用os.popen('ipconfig', 'w')時,輸出是正確的,沒有十六進制值,只有文本,但我無法將其保存為整數。

有些人已經問過問題,我發現...

哪種編碼使用 \\x(反斜杠 x)前綴?

在 Python 3 中解碼十六進制字符串

感謝 4 的幫助!

嘗試這個

output.decode('cp866')

子進程的輸出應該是一個bytes對象(在 Python 3 中),使用您的示例:

b'Wireless LAN adapter \x81\xa5\xe1\xaf\xe0\xae\xa2\xae\xa4\xad\xa0\xef \xe1\xa5\xe2\xec 4:'.decode('cp866')
> 'Wireless LAN adapter Беспроводная сеть 4:'

一般來說,您需要知道您的系統使用的是哪種編碼, cp866用於俄語,請查看https://docs.python.org/3/library/codecs.html#standard-encodings

您還可以查詢您的系統默認編碼

sys.getdefaultencoding()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM