[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'。

编码和解码是反向操作。一切都必须先编码,然后才能写入磁盘,并且必须先将其解码,才能被人类读懂。

你可能感兴趣的:([python] string 与 byte string 的区别)