2014-10-07 132 views
0

我使用的是Python 2.7,我需要将返回值struct.pack()函数(根据文档将str)转换为bytearray对象。 bytearray()内建函数接受一个字符串值,但文档说我也必须通过一个encoding参数用于将字符串编码为字节。我不知道该编码应该是什么,因为struct.pack()的返回值大概应该是字节值,它不是实际的文本字符串,所以没有编码。如何将python str转换为bytearray

那么如何将存储在Python2 str中的bytes对象转换为bytearray对象?

回答

3

更新:文档已被corrected;传递字符串时不需要使用编码参数,现在该部分正确地告诉您,仅在unicode对象中需要该参数。

我的旧回答如下。


该文档是错误的;它是从Python 3批量复制而来的,其中编码参数确实是必需的,因为(unicode)字符串必须先编码为字节。

在Python 2中,只是通过在字符串中,使用没有指定编码:

>>> bytearray('The quick brown fox jumps over the lazy dog') 
bytearray(b'The quick brown fox jumps over the lazy dog') 

和精神上与unicode替换的文件中。

我已经提交了一个新的issue in the Python tracker以纠正此问题。

+0

固定。现在,该句子显示“如果它是unicode,则还必须提供编码(以及可选的错误)参数; bytearray()然后使用unicode.encode()将unicode转换为字节。 – 2014-10-10 17:08:36

+0

@TerryJanReedy:感谢您的快速文档修复! – 2014-10-11 15:13:29

+0

当周五新发布的问题列表出来时,我会尝试做任何简单的文档修复,以免他们迷失方向并坐几年。建议在跟踪器消息中提供纯文本(未格式化)的重新注释。 – 2014-10-13 03:28:59