📜  Python中的字节对象与字符串

📅  最后修改于: 2020-01-13 11:54:31             🧑  作者: Mango

在Python 2中,str和byte都是相同的typeByte对象,而在Python 3中,Python 3中定义的Byte对象是“ 字节序列 “,类似于Python 2中的“ unicode “对象。对于字符串和字节对象,他们中的一些描述如下:
`

  • 字节对象是序列字节,而字符串是的序列字符
  • 字节对象在内部是机器可读的形式,字符串仅是人类可读的形式。
  • 由于Byte对象是机器可读的,因此可以将它们直接存储在磁盘上。而字符串需要先进行编码,然后才能存储在磁盘上。


我们讨论下字节对象转换为String并将String转换为字节对象的方法。

编码

PNG,JPEG,MP3,WAV,ASCII,UTF-8等是不同形式的编码。编码是一种格式,以字节为单位表示音频,图像,文本等。将字符串转换为字节对象称为编码。这是必要的,以便可以使用ASCIIUTF-8编码技术通过映射,将文本存储在磁盘上。
编码这个任务是使用encode()实现的。它以编码技术为参数,默认技术是“ UTF-8 “。

# Python代码,展示string的编码
# 初始化字符串
a = '芒果文档'
# 初始化byte对象
c = 芒果文档'
# 使用encode()编码 String,使用ASCII编码
# 并存入d
d = a.encode('ASCII')
# 检查是否a被编码成bytes
if (d==c):
    print ("编码成功")
else : print ("编码失败")

输出:

编码成功

解码

同样,解码是将Byte对象转换为String的过程。它是使用define()实现的。如果您知道使用哪种编码来编码的string,则可以将字节字符串解码回肉眼可读字符串。编码和解码是相反的过程。

# Python代码,展示解码
# 初始化String
a = '芒果文档'
# 初始化byte对象
c = 芒果文档'
# 使用decode()对c进行ASCII解码
d = c.decode('ASCII')
# 检查c时候成功解码
if (d==a):
    print ("解码成功")
else : print ("解码失败")

输出:

解码成功