[python] string 與 byte string 的區別

文章參考:http://stackoverflow.com/questions/6224052/what-is-the-difference-between-a-string-and-a-byte-string


計算機唯一可以存儲的是字節。

要在計算機中存儲任何東西,您必須先對其進行編碼,即將其轉換為字節。例如:

  • 如果你想存儲的音樂,你必須先進行編碼使用它MP3,WAV等等。
  • 如果你想存儲圖片,必須先進行編碼使用它PNG,JPEG等等。
  • 如果你想存儲文本,必須先進行編碼使用它ASCII,UTF-8等等。

MP3,WAV,PNG,JPEG,ASCII和UTF-8是的示例編碼。編碼是以字節表示音頻,圖像,文本等的格式。

在Python中,一個字節串(byte string)就是:一個字節序列。它不是人類可讀的。在抽象的表層(hook)下,必須將所有內容轉換為字節串,然后才能存儲在計算機中。

另一方面,通常稱為“字符串”的字符串是字符序列。它是人類可讀的。字符串不能直接存儲在計算機中,它必須首先編碼(轉換成字節串)。有多種編碼格式,通過它們可以將字符串轉換為字節串,例如ASCII格式和UTF-8格式。

  • 'I am a string'.encode('ASCII')

以上Python代碼將'I am a string'使用編碼對字符串進行編碼ASCII。上述代碼編碼后的結果將是一個字節串。如果你打印它,Python將使用b'I am a string'來代表它。但是請記住,字節字符串不是人類可讀的,只是Python ASCII在打印(print)的時候解碼它們。在Python中,字節串由b前綴來表示,后跟字節串的ASCII表示。

如果您知道用于對其進行編碼的編碼,則字節字符串可以解碼回到字符串中。

  • b'I am a string'.decode('ASCII')

上述代碼將返回原始字符串'I am a string'。

編碼和解碼是反向操作。一切都必須先編碼,然后才能寫入磁盤,并且必須先將其解碼,才能被人類讀懂。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容