用于bytearray的用例

时间:2014-03-05 08:21:54

标签: python bytearray

你能指出Python bytearray有用的场景吗?它只是一个支持列表方法的非unicode字符串,无论如何都可以用str个对象轻松实现吗?

我理解有人认为它是“可变字符串”。但是,我什么时候需要这样的东西?而且:不像字符串或列表,我严格限于ascii,所以无论如何我更喜欢其他人,那不是真的吗?

2 个答案:

答案 0 :(得分:3)

巴赫,

bytearray是一个可变的内存块。为此,您可以将任意字节推入其中并仔细管理内存分配。虽然许多Python程序员从不担心内存使用,但我们这些人都有。我在高负载网络操作中管理缓冲区分配。有许多可变阵列的应用 - 太多无法计算。

bytearray视为可变字符串是不正确的。事实并非如此。它是一个字节数组。字符串具有特定的结构。 bytearray没有。您可以根据需要解释字节。字符串是单向的。但要小心,使用Unicode字符串时有很多极端情况。 ASCII字符串比较微不足道。现代代码横跨国界。因此,Python是相当完整的基于Unicode的字符串类。

bytearray显示缓冲区协议分配的内存。这个非常丰富的协议是Python与C互操作的基础,支持numpy和其他直接访问内存技术。特别是,它允许将内存轻松地构建为C或FORTRAN顺序的多维数组。

您可能永远不必使用bytearray

Anon,Andrew

答案 1 :(得分:2)

deque似乎需要比bytearray更多的空间。

>>> sys.getsizeof(collections.deque(range(256)))
1336
>>> sys.getsizeof(bytearray(range(256)))
293

我猜这是因为布局。

如果你需要使用bytearray的样本我建议searching the online code with nullege

bytearray还有一个优点:您无需为此导入任何内容。这意味着人们会使用它 - 无论它是否有意义。

进一步阅读有关bytearray的信息:the bytes type in python 2.7 and PEP-358