在Python 2中,将十六进制形式的字符串转换为相应的unicode非常简单:
comments.decode("hex")
字符串
其中,变量“comments”是文件中一行的一部分(该行的其余部分 * 不 * 需要转换,因为它只以ASCII表示。
然而,在Python 3中,这不起作用(我假设是因为bytes/string与string/unicode开关。我觉得Python 3中应该有一个一行程序来做同样的事情,而不是阅读整行作为一系列字节(我不想这样做),然后分别转换该行的每一部分。如果可能的话,我想把整行读成一个unicode字符串(因为该行的其余部分都是unicode的),只把这一部分从十六进制表示转换过来。
4条答案
按热度按时间5cg8jx4n1#
比如说:
字符串
只需输入您正在使用的实际编码即可。
swvgeqrz2#
字符串
f87krz0w3#
来自@unbeli和@Niklas的答案很好,但是@unbeli的答案并不适用于所有十六进制字符串,并且最好在不导入额外库(编解码器)的情况下进行解码。以下应该可以工作(但对于大字符串不是很有效):
字符串
基本上,它通过填充零并解码为utf-16来解决无效的utf-8字节。
4sup72z84#
我想解码一个字节的字符串,它可能会在结尾遗漏一个字符。
因为十六进制的字节数是2,所以
codecs
不能工作。所以我不得不写一个小函数。个字符