2017-10-15 98 views
1

在Python 3.6中,base64.b64encode()需要一個類字節對象,而不是「STR」什麼是字節狀物體

什麼是對類字節對象的示例,而不是一個正常串?

回答

2

任何在邏輯上存儲字節序列的資格。這包括實際的bytes類型,bytearray,mmap.mmap,array.array('B')等。str在Python 3中是一種文本類型;字符不會以指定的編碼存儲,因此您不能直接將它們用作原始二進制數據;他們必須是encode - 明確使用特定的編碼。

對於技術定義,請參閱Python 3 glossary

支撐緩衝協議,並可以導出一個C-連續的緩衝區的對象。這包括所有bytes,bytearrayarray.array對象,以及許多常見的對象memoryview。類似字節的對象可用於使用二進制數據的各種操作;這些包括壓縮,保存到二進制文件,並通過套接字發送。

某些操作需要二進制數據是可變的。文檔通常將這些文件稱爲「讀寫字節類對象」。示例可變緩衝區對象包括bytearraybytearraymemoryview。其他操作要求二進制數據存儲在不可變對象(「只讀字節對象」)中;這些示例包括bytesbytes對象的memoryview

+0

值得一提的是,字符串可以轉換爲字節 –

+0

@YaroslavSurzhikov:添加了一個筆記。 – ShadowRanger

+0

@ShadowRanger因此,例如,如果我在base64.b64encode()中使用json字符串,那麼如何將字符串更改爲類似字節的對象? –