如何将字节转换为 python 中的字符

how to convert a bytes to character in python

我有这样一个字节类型的数据:

b"6D4B8BD5"

数据来自使用 unicode-escape 代码的汉字。 它可以这样生成:

'测试'.encode('unicode-escape')

结果:

b'\u6d4b\u8bd5'

如何将 b"6D4B8BD5" 转换为 b'\u6d4b\u8bd5' 或 如何将 b"6D4B8BD5" 转换为 '测试'?

>>> str = b"6D4B8BD5"
>>> chr(int(str[0:4], 16))
'测'
>>> chr(int(str[4:8], 16))
'试'

returns 正确结果并适用于任何字符串的工作解决方案:)

Python 3.x

def convert(chars):
    if isinstance(chars, bytes):
        chars = chars.decode('ascii')

    chars = [''.join(c) for c in zip(chars[::4], chars[1::4], chars[2::4], chars[3::4])]

    return "".join([chr(int(c, 16)) for c in chars])


print(convert(b"6D4B8BD5"))


+++++++

#> python test123.py
测试

不使用列表等的第二种解决方案。更简单、更快捷。

def convert(chars):
    if isinstance(chars, bytes):
        chars = chars.decode('ascii')

    result = ''
    for i in range(len(chars) // 4):
        result += chr(int(chars[4 * i:4 * (i + 1)], 16))

    return result


print(convert(b"6D4B8BD5"))
++++++++

#> python test123.py
测试

unhexlify 是获取字节的函数,然后使用正确的编码进行解码:

>>> from binascii import unhexlify
>>> s = b'6D4B8BD5'
>>> unhexlify(s).decode('utf-16be')
'测试'