2014-10-07 295 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