python之04-DataType-Bytes, Bytearray二进制类型
2021/7/7 22:36:30
本文主要是介绍python之04-DataType-Bytes, Bytearray二进制类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
@Author: liuyangly1
@Date : 2021-07-07 21:51:29
@Blog : https://blog.csdn.net/liuyang_1106
@Github: https://github.com/liuyangly1
@Email : 522927317@qq.com
文章目录
- 二进制类型Bytes, Bytearray
- 1. bytes
- 1.1 初始化
- 1.2 转换
- 1.3 增,删,改,查,排序
- 1.4 开始和末尾判断,子序列判断,拼接,连接,分割序列
- 1.5 对齐,分割,删除
- 2. bytearray
- 2.1 初始化
- 2.2 转换
- 2.3 增,删,改,查,排序
- 2.4 开始和末尾判断,子序列判断,拼接,连接,分割序列
- 2.5 对齐,分割,删除
二进制类型Bytes, Bytearray
操作二进制数据的核心内建数据类型是bytes和bytearray。它们由memoryview支持,memoryview使用buffer协议访问内存中其它的二进制对象,却不需要拷贝这些对象。array module对像32位整数和IEEE754双精度浮点数这样的基本数据类型有有效的存储支持。
1. bytes
bytes对象是由单字节组成的不可修改序列。
1.1 初始化
>>> x = b'abc' >>> x = b"abc" >>> x = b'''abc''' >>> type(x) <class 'bytes'> >>> x = br'abc\n' >>> x b'abc\\n' # bytes([source[, encoding[, errors]]]) # 整数 >>> x = bytes(1234) # 字符串,注意encoding必不可少。 >>> x = bytes('1234',encoding='utf-8')
当source参数为整数时,返回这个整数所指定长度的空字节数组。
>>> bytes(2) b'\x00\x00' >>> bytes(-2) #整数需大于0,用于做数组长度 Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> bytes(-2) ValueError: negative count
当source参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里.
>>> bytes([1,2,3]) b'\x01\x02\x03' >>> bytes([256,2,3]) Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> bytes([256,2,3]) ValueError: bytes must be in range(0, 256)
1.2 转换
两位16进制数正好可以表示一个byte,16进制数就成了描述bytes的常用形式。因此,bytes类型就有一个额外的类方法来读取16进制数据。
>>> bytes.fromhex('2Ef0 F1f2 ') b'.\xf0\xf1\xf2' >>> b'.\xf0\xf1\xf2'.hex() '2ef0f1f2'
1.3 增,删,改,查,排序
-
增:无法增加
-
删 translate, lstrip
bytes.translate(table, /, delete=b'') # 默认为空格 bytes.lstrip([chars])
- 改 replace
>>> x = b'abc' >>> x.replace('a','#') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' >>> x.replace(b'a','#') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' >>> x.replace(b'a',b'#') b'#bc
- 查 count, find,rfind
# bytes.count(sub[, start[, end]]) >>> x = b'abcabcabc' # 返回匹配数量 >>> x.count(b'abc',4,10) 1 >>> x.count(b'abc',3,10) 2 # 返回匹配的初始位置 >>> x.find(b'abc',3,10) 3 # 最大索引 bytes.rindex(sub[, start[, end]])
- 排序
1.4 开始和末尾判断,子序列判断,拼接,连接,分割序列
- 开始判断startswith末尾判断endswith
>>> x = b'abcabcabc' >>> x.startswith(b'ab') True >>> x.endswith(b'bc') True >>> x.endswith(b'bbc') False
- 子序列判断in
>>> b'Py' in b'Python' True
- 拼接join
>>> b''.join([b'a', b'b', b'c']) b'abc'
- 连接maketrans
bytes.maketrans(from, to)
- 分割序列partition和rpartition
bytes.partition(sep) bytes.rpartition(sep)
1.5 对齐,分割,删除
- 对齐
bytes.ljust(width[, fillbyte]) bytes.center(width[, fillbyte]) bytes.rjust(width[, fillbyte])
- 分割
bytes.split(sep=None, maxsplit=-1) bytes.rsplit(sep=None, maxsplit=-1)
- 删除
bytes.strip([chars]) bytes.rstrip([chars])
2. bytearray
bytearray是bytes的可修改版本。
2.1 初始化
# bytearray([source[, encoding[, errors]]]) # 创建一个空的实例:bytearray() >>> bytearray() bytearray(b'') # 创建一个给定长度的0填充的实例:bytearray(10) >>> bytearray(10) bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') # 通过一个可迭代的整数序列进行创建:bytearray(range(20)) >>> bytearray(range(20)) bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13') # 通过buffer协议拷贝一个已经存在的二进制数据:bytearray(b'Hi!') >>> bytearray(b'Hi!') bytearray(b'Hi!')
2.2 转换
两位16进制数正好可以表示一个byte,16进制数就成了描述bytes的常用形式。因此,bytes类型就有一个额外的类方法来读取16进制数据。
>>> bytearray.fromhex('2Ef0 F1f2 ') b'.\xf0\xf1\xf2' >>> b'.\xf0\xf1\xf2'.hex() '2ef0f1f2'
2.3 增,删,改,查,排序
-
增:无法增加
-
删 translate, lstrip
bytearray.translate(table, /, delete=b'') # 默认为空格 bytearray.lstrip([chars])
- 改 replace
>>> x = b'abc' >>> x.replace('a','#') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' >>> x.replace(b'a','#') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' >>> x.replace(b'a',b'#') b'#bc
- 查 count, find,rfind
# bytearray.count(sub[, start[, end]]) >>> x = b'abcabcabc' # 返回匹配数量 >>> x.count(b'abc',4,10) 1 >>> x.count(b'abc',3,10) 2 # 返回匹配的初始位置 >>> x.find(b'abc',3,10) 3 # 最大索引 bytearray.rindex(sub[, start[, end]])
- 排序
2.4 开始和末尾判断,子序列判断,拼接,连接,分割序列
- 开始判断startswith末尾判断endswith
>>> x = b'abcabcabc' >>> x.startswith(b'ab') True >>> x.endswith(b'bc') True >>> x.endswith(b'bbc') False
- 子序列判断in
>>> b'Py' in b'Python' True
- 拼接join
>>> b''.join([b'a', b'b', b'c']) b'abc'
- 连接maketrans
bytearray.maketrans(from, to)
- 分割序列partition和rpartition
bytearray.partition(sep) bytearray.rpartition(sep)
2.5 对齐,分割,删除
- 对齐
bytearray.ljust(width[, fillbyte]) bytearray.center(width[, fillbyte]) bytearray.rjust(width[, fillbyte])
- 分割
bytearray.split(sep=None, maxsplit=-1) bytearray.rsplit(sep=None, maxsplit=-1)
- 删除
bytearray.strip([chars]) bytearray.rstrip([chars])
这篇关于python之04-DataType-Bytes, Bytearray二进制类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门