python - 字符串和字节字符串有什么区别?

我正在使用一个返回“字节字符串”(bytes)的库,我需要将其转换为字符串。

这两件事之间真的有区别吗?它们之间有什么关系,我该如何进行转换?

最佳答案

计算机只能存储字节。

要在计算机中存储任何内容,您必须首先对其进行编码,即将其转换为字节。例如:

  • 如果你想存储音乐,你必须先编码它使用MP3 , WAV等。
  • 如果要存储图片,必须先编码使用PNG , JPEG等。
  • 如果你想存储文本,你必须先编码它使用ASCII , UTF-8等。

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/

相关文章:

linux - 即使在安装 npm install -g gulp 后也找不到本地 gulp 安装

python - 为什么 python setup.py 在 Travis CI 上说无效命令 'b

linux - 命令行参数中的 "-"(破折号)有什么魔力?

linux - 如何更改 Ubuntu 中的默认 GCC 编译器?

linux - 如何在shell中处理10多个参数

python - django 测试应用程序错误 - 创建测试数据库时出错 : permission

android - adb 设备命令不起作用

python - APT 命令行界面,类似于是/否输入?

python - 从动态导入的模块中的类的字符串名称动态实例化?

python - 重新加载模块给出 NameError : name 'reload' is not