文章参考: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'。
编码和解码是反向操作。一切都必须先编码,然后才能写入磁盘,并且必须先将其解码,才能被人类读懂。
网友评论