正在用python寫一個程序gui。該程序的概念是當我們運行prgm時,它會要求打開一個文件(女巫包含十六進制值爲TASK.txt)和讀取模式。將一行的數據存儲在一個變量中。 如何將該數據轉換爲ascii值。對Python來說是新的。這是我的代碼:如何將十六進制文件數據轉換爲ASCII?
import binascii
import base64
from tkinter import *
from tkinter.filedialog import askopenfilename
def callback():
with open(askopenfilename(),'r') as r:
next(r)
for x in r:
z = str(x[1:-2])
if len(z) % 2:
z = '0' + 'x' + z
print(binascii.unhexlify(z))
a = Button(text='select file', command=callback)
a.pack()
mainloop()
這是我收到的錯誤:
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\python sw\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\LENOVO\Downloads\hex2.py", line 16, in callback
print(binascii.unhexlify(z))
binascii.Error: Non-hexadecimal digit found"""
Tkinter的東西是無關緊要的。問題代碼應該是一個專注於實際問題的[mcve]。該錯誤消息表明,您在arg中的字符是'binascii.unhexlify',它們不是有效的十六進制數字。做**不**先於'十六進制數據''0x'。這些數據可能還有其他問題。你可以發佈一個典型的小樣本數據嗎? –
謝謝你的回覆,這是我的資料H247314748F8 HA010001FD –