python-3.x 将bytearray转换为类似字节的对象

41ik7eoe  于 2023-06-07  发布在  Python
关注(0)|答案(2)|浏览(235)

在Python 3中,我得到了错误TypeError: a bytes-like object is required, not 'bytearray'
我有一个bytearray,它看起来像这样:

print(my_ba)     # bytearray(b'}\x0e\x15/ow4|-')

如果我在控制台中输入这个,它就工作了:

>>> print(base58.b58encode(b'}\x0e\x15/ow4|-'))
2bKmhuGiGP7t8

但是这会产生一个错误,我无法找到如何从bytearray中获取b ''字符串:

>>> print(base58.b58encode(my_ba))
TypeError: a bytes-like object is required, not 'bytearray'

我相信这是显而易见的,但是我如何将字节数组转换为带有b前缀的字符串呢?

d6kp6zgx

d6kp6zgx1#

正如Coldspeed在评论中所说的那样,只需将一个字节数组传递给bytes调用:
bytes(my_ba)

eimct9ow

eimct9ow2#

bytes和bytearray之间的串联采用第一项的类型,因此将bytearray串联到空字节字符串也会将其转换为bytes。

my_ba = bytearray(b'}\x0e\x15/ow4|-')
my_ba = b"" + my_ba
print(type(my_ba))    # <class 'bytes'>

话虽如此,这个错误可能不会出现在您使用的任何库的最新版本中,因为bytearray是一种类似于bytes的类型。例如,base58接受bytearray的方式是since version 1.0.3.

相关问题