如何将字节转换为 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')
'测试'
我有这样一个字节类型的数据:
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')
'测试'