在bytearray前添加元素:TypeError:需要一个整数

4

我有两个 bytearray

ba1 = bytearray(b'abcdefg')
ba2 = bytearray(b'X')

如何在ba1中插入(“prepend”)ba2

我尝试过:

ba1.insert(0, ba2)

但这似乎不正确。
当然,我可以做以下操作:
ba2.extend(ba1)
ba1 = ba2

但是如果 ba1 非常大呢?这是否意味着不必要地复制整个 ba1?这样是否内存效率高?

我如何在 bytearray 前添加元素?


2
你读过这个吗?http://dabeaz.blogspot.se/2010/01/few-useful-bytearray-tricks.html - Henrik Andersson
1
ba2 + ba1有什么问题? - thefourtheye
可能是将字节字符串转换为整数(Python)的重复问题。 - GLHF
由于您想在ba1的开头插入内容,因此您无法避免复制其当前内容的需要。另一方面,在bytearray的末尾添加内容也不是特别高效:这类似于将字符串连接起来。 - PM 2Ring
1个回答

10
你可以这样做:

ba1 = bytearray(b'abcdefg')
ba2 = bytearray(b'X')

ba1 = ba2 + ba1
print(ba1)  # --> bytearray(b'Xabcdefg')

要让在开头插入的操作更加明显,你可以使用这个方法代替:

ba1[:0] = ba2  # Inserts ba2 into beginning of ba1.

还要注意,如果你知道 ba2 只有一个字节长,那么这种情况也可以适用:

ba1.insert(0, ba2[0])  # Valid only if len(ba2) == 1

5
@Downvoter:这个回答有什么问题吗?+1 因为对我有效。 - Alexander O'Mara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接