将十六进制字符串转换为Unicode

2 投票
2 回答
7413 浏览
提问于 2025-04-15 15:02

我该如何把字符串 'dead' 转换成一个 Unicode 字符串 u'\xde\xad' 呢?

这样做:

from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])

会生成一个 <type 'str'> 类型的字符串 '\xde\xad'

如果我尝试用 Unicode.join() 这样做:

from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])

就会出现错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)

2 个回答

1

可以查看这个关于Python Unicode的指南,然后使用类似下面的代码:

unicode('\x80abc', errors='replace')

或者

unicode('\x80abc', errors='ignore')
5

Unicode的设计是为了和Latin-1兼容,你可以使用它,然后简单地解码这个字节串:

In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'

撰写回答