我正在使用一个返回“字节字符串”(bytes
)的库,我需要将其转换为字符串。
这两件事之间真的有区别吗?它们之间有什么关系,我该如何进行转换?
最佳答案
计算机只能存储字节。
要在计算机中存储任何内容,您必须首先对其进行编码,即将其转换为字节。例如:
MP3、WAV、PNG、JPEG、ASCII 和 UTF-8 是 编码的示例。编码是一种以字节为单位表示音频、图像、文本等的格式。
在 Python 中,字节串就是:一个字节序列。它不是人类可读的。在后台,所有内容都必须转换为字节字符串才能存储在计算机中。
另一方面,字符串,通常简称为“字符串”,是一个字符序列。它是人类可读的。字符串不能直接存入计算机,必须先编码(转成字节串)。字符串可以通过多种编码方式转换为字节串,如ASCII、UTF-8等。
'I am a string'.encode('ASCII')
上面的 Python 代码将使用编码 ASCII 对字符串 'I am a string' 进行编码。上述代码的结果将是一个字节串。如果你打印它,Python 会将它表示为 b'I am a string'
。但是请记住,字节字符串 不是人类可读的,只是当您打印它们时 Python 会从 ASCII 解码它们。在 Python 中,字节字符串由 b
表示,后跟字节字符串的 ASCII 表示。
如果您知道用于对其进行编码的编码,则可以将字节字符串解码回字符串。
b'I am a string'.decode('ASCII')
以上代码会返回原字符串'I am a string'
。
编码和解码是逆运算。一切都必须先编码,然后才能写入磁盘,并且必须先解码,然后才能被人类读取。
https://stackoverflow.com/questions/6224052/