Python3 字节类型

译者:anxin
日期:2018-05-28

Python3 字节(Bytes,内置数据类型名:bytes)对象是不可变的单字节的 ASCII 编码序列,可以把它看做是使用 ASCII 编码的字符串,在 Python3 中定义的字符串使用的是 Unicode 编码,所以字节和字符串的区别是编码的不同,在 Python3 中需要处理 ASCII 编码时需要定义字节对象。

在计算机领域中,很多二进制协议的编码都是基于 ASCII 文本编码,Bytes 对象提供了一些操作与 ASCII 相兼容数据的方法,同时因为 String 对象是处理的 Unicode 编码数据,Bytes 对象也提供了一些用于处理 String 对象的方法,用于把 String 对象转换为 Bytes 对象来处理。

Python3 定义 Bytes 字节对象

Python3 定义 Bytes 字节对象有两种方式:

  • 直接定义 Bytes 字节对象常量
  • 使用 Bytes 字节对象方法,定义字节对象

定义 Bytes 字节对象常量

定义 Bytes 字节常量的格式如下:

bytesliteral   ::=  bytesprefix(shortbytes | longbytes)

一个字符串长量包括可选的bytesprefix,然后是shortbytes或者longbytes

参数说明:

  • bytesprefix:可选的字符串前缀,可选的值是:"b" | "B" | "br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB"
  • shortbytes:短字节形式(定义的字节不能跨行),使用单引号('...'),双引号("...")定义的字节。
  • longbytes:长字节形式(定义的字节能够跨行),使用三单引号('''...'''),三双引号("""...""")定义的字节。

字符串前缀bytesprefix说明:

  • b 或 B:定义一个字节对象,而不是字符串,它表示字节使用的是 ASCII 编码。
  • r 或 R:定义一个原生字节常量(raw strings),在原生字节常量中 \ 看做普通字符,而不是转义字符,在其中的字符都当做普通字符串。

Python3中使用单引号('...'),双引号("..."),三单引号('''...'''),三双引号("""...""")来定义字节常量的实例如下:

>>> bytes1 = b'Python3 bytes!'
>>> bytes2 = b"Python3 bytes!"
>>> bytes3 = b'''Python3 bytes!'''
>>> bytes4 = b"""Python3 bytes!"""
>>> print(bytes1)
b'Python3 bytes!'
>>> print(bytes2)
b'Python3 bytes!'
>>> print(bytes3)
b'Python3 bytes!'
>>> print(bytes4)
b'Python3 bytes!'

从结果中可以看出和 Python3 字符串是有区别的。

利用 Bytes 对象方法定义字节

字节对象可以使用相应的方法从字符串生成,方法的格式如下:

bytes([source[, encoding[, errors]]])

参数解释:

  • source:用于生成字节的对象源数据,一般是字符串。
  • encoding:源数据所使用的编码。

利用 Bytes 对象生成字节的实例如下,本实例从一个字符串创建一个字节对象:

str = '创建字节对象!'
output = bytes(str, 'utf-8')
print(str)
print(output)

#输出结果
创建字节对象!  # str 的输出结果
b'\xe5\x88\x9b\xe5\xbb\xba\xe5\xad\x97\xe8\x8a\x82\xe5\xaf\xb9\xe8\xb1\xa1\xef\xbc\x81'  # output 的输出结果

Python3 字节生成字符串

Python3 同样提供了从字节转换为字符串的方法,该方法的形式如下:

bytes.decode(encoding="utf-8", errors="strict")

该方法从字节对象生成一个字符串,默认使用 utf-8 编码,实例如下:

by = b'Python3 bytes!'
str = by.decode()
print(by)
print(str)

#输出结果
b'Python3 bytes!'      # by 的输出结果
Python3 bytes!         # str 的输出结果
本文链接:/tutorial/python3/python3-zijie-shuju-leixing

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!