我正在用pythongui编写一个程序。这个程序的概念是当我们运行prgm时,它会要求打开一个文件(其中包含十六进制值任务.txt)使用读取模式。 将一行的数据存储在一个变量中。 如何将数据转换为ascii值。我是python新手。这是我的代码:
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()
这是我得到的错误:
^{pr2}$
只要正确地重读您的问题,新答案:
0x
作为前缀,因为它与unhexlify
不起作用,甚至不会使字符串长度相等。在unhexlify
返回一个字节数组,可以使用.decode()
将其解码为字符串import binascii
,可以用bytearray.fromhex("7061756c").decode()
将十六进制转换为字符串返回
['paul', 'paula']
我在仔细阅读你的问题之前写了些什么可能仍然有用
如
^{pr2}$PM 2Ring
所述,unhexilify
只在没有前缀的情况下工作,比如0x
。 十六进制字符串用空格隔开,并以H
为前缀,必须删除该字符串。你已经这样做了,但我认为可以用一种更好的方式:这将抛出一个} 您的数据。如docs中所述,您需要偶数个十六进制字符,每对代表一个字节。在
Error: Odd-length string
。请确定您确实想^{如果要将十六进制数转换为十进制整数,请尝试以下方法:
int(string, base)
将从一个数字系统(十六进制以16为基数)转换为十进制(以10为基数)。在**离题**
将导致z的长度仍然不均匀,因为您添加了偶数个字符。在
相关问题 更多 >
编程相关推荐