Python 内置模块之 bytes
官方文档:https://docs.python.org/zh-cn/3.8/library/argparse.html
0、bytes类型的特性
Python 3.x之后,Python自带字符默认使用utf-8格式编码和显示:
- Python默认字符串
string
数据类型是utf-8显示形式的序列 bytes
数据类型是utf-8格式的二进制形式的不可变序列bytearray
数据类型是utf-8格式的二进制形式的可变序列
1、bytes 语法
bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。
语法
1 |
|
参数
- 如果 source 为整数,则返回一个长度为 source 的初始化数组;
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
- 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
- 如果没有输入任何参数,默认就是初始化数组为0个元素。
返回值
返回一个新的 bytes 对象。
2、bytes类型创建与转化
2.1、bytes类型与数字
数字类型并不是字符串,无法直接生成对应的bytes类。Python对数字类型定义了特殊意义
当入参为数字时,表示创建
nul(\x00)
的向量1
2byte_str = bytes(10)
print(byte_str) # b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'当入参为数字的序列时,直接转为bytes的序列,且对应值相同,将数字序列直接写入底层应该使用这种方法
1
2byte_str = bytes([1, 10, 0xF])
print(byte_str) # b'\x00\x10\x0f'当二进制数据在
[33, 126]
区间时,属于ASCII表上可显示字符范围,会直接显示对应的字符1
2byte_str = bytes([33, 48, 126])
print(byte_str) # b'!0~'
2.2、bytes类型与ASCII字符
创建bytes数据
使用
b''
创建1
2byte_str = b'Python'
print(byte_str) # b'Python'使用
bytes()
创建不可变序列1
2byte_str = bytes('Python', encoding='utf-8')
print(byte_str) # b'Python'使用
bytearray()
创建可变序列1
2byte_str = bytearray('Python', encoding='utf-8')
print(byte_str) # bytearray(b'Python')
还原bytes数据
使用
bytes.decode()
还原不可变序列1
2
3byte_str = bytes('Python', encoding='utf-8')
utf_str = bytes.decode(byte_str)
print(utf_str) # 'Python'使用
bytearray.decode()
还原可变序列1
2
3byte_str = bytearray('Python', encoding='utf-8')
utf_str = bytearray.decode(byte_str)
print(utf_str) # 'Python'
2.3、bytes类型与汉字
在UTF-8中,每个汉字用3个Byte表示
1 |
|
还原:
1 |
|
3 bytes类型切片迭代
通过
bytes[index]
方式返回的是底层int
类型1
2
3byte_str = b'a'
print(type(byte_str[0])) # <class 'int'>
print(byte_str[0]) # 97通过
for ... in bytes
方式返回的是底层int
类型1
2
3
4
5
6
7
8
9
10
11
12
13byte_str = b'abc'
for byte in byte_str:
print(type(byte))
print(byte)
"""
<class 'int'>
97
<class 'int'>
98
<class 'int'>
99
"""通过
bytes[start:end]
方式返回的是底层bytes
类型1
2
3byte_str = b'a'
print(type(byte_str[:])) # <class 'bytes'>
print(byte_str[:]) # b'a'
Python 内置模块之 bytes
https://flepeng.github.io/021-Python-31-Python-标准库-Python-标准库之-bytes-二进制/