如何在python中将非ASCII字节的bytearray转换为字符串?

2024-06-13 02:20:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如果Python的位数组包含非ASCII字节,我不知道如何将其转换为字符串。示例:

>>> string='\x9f'
>>> array=bytearray(string)
>>> array
bytearray(b'\x9f')
>>> array.decode()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9f in position 0: ordinal not in range(128)

在我的例子中,我只是想从bytearray中得到一个字符串'\x9f'。有可能吗?


Tags: 字符串in示例moststring字节ascii数组
3条回答

在Python 2中,只需将其传递给str()

>>> import sys; sys.version_info
sys.version_info(major=2, minor=7, micro=8, releaselevel='final', serial=0)
>>> string='\x9f'
>>> array=bytearray(string)
>>> array
bytearray(b'\x9f')
>>> str(array)
'\x9f'

在Python 3中,您需要将其转换回bytes对象:

>>> bytes(array)
b'\x9f'

你试过了吗

byteVariable.decode('utf-8')

我想提到Python附带的binascii库。

我的用例:我正在查询一个数据库,其中有一个二进制字段被用作数据库中的键。我想拉那个二进制字段,把它当作其他地方的键。我认为把它转换成字符串是最好的用例。

比那西给了我更好的选择:

import binascii binary_field = bytearray(b'\x92...') binascii.hexlify(binary_field)

相关问题 更多 >