python内置类bytearray()详解

          bytearray 是 Python 的一个内置类,它提供了一个可变序列的字节数组。

  • bytearray 数组的元素必须是0-255之间的整数,这些整数对应于ASCII字符集中的数字。下面着张图是部分ASCII字符:

  • bytearray 是可变的,可修改其内容,而 bytes 是不可变的,不能修改。

创建 bytearray

  • 从整数序列创建
ba1 = bytearray([65, 66, 67])
#从ASCII表得知数字三个数字对应字符 'ABC'
  • 从字节串创建
ba2 = bytearray(b'ABC')
  • 从字符串创建(需要指定编码)
ba3 = bytearray('ABC', 'utf-8')
  • 初始化指定大小的字节数组,并用0填充
ba4 = bytearray(5) # 代表5个0

循环打印bytearray元素

s_array = bytearray(b"Hello world")
print(s_array)
for i in s_array:print(f'字节码对应的数字:{i} 转换为字符:{chr(i)}')#结果
bytearray(b'Hello world')
字节码对应的数字:72 转换为字符:H
字节码对应的数字:101 转换为字符:e
字节码对应的数字:108 转换为字符:l
字节码对应的数字:108 转换为字符:l
字节码对应的数字:111 转换为字符:o
字节码对应的数字:32 转换为字符:
字节码对应的数字:119 转换为字符:w
字节码对应的数字:111 转换为字符:o
字节码对应的数字:114 转换为字符:r
字节码对应的数字:108 转换为字符:l
字节码对应的数字:100 转换为字符:d

方法介绍

字节数组bytearray的很多方法类似于之前讲过的list列表。

  • append(int): 追加一个字节到末尾。
#增加一个字符h,对应数字是104
s_array.append(104)
print(s_array)
#结果
bytearray(b'Hello worldh')
  • extend(iterable_ints): 追加多个字节到末尾。
s_array.extend([104,105])
print(s_array)
#结果
bytearray(b'Hello worldhi')
  • insert(index, int): 在指定索引处插入一个字节。
s_array.insert(3,104)
print(s_array)
#结果
bytearray(b'Helhlo world')
  • remove(int): 移除首次出现的指定字节。
#移除字符H,数字对应72
s_array.remove(72)
print(s_array)
#结果
bytearray(b'ello world')
  • pop([index]): 移除并返回指定索引处的字节(默认为最后一个)。
popvalue = s_array.pop()
print(popvalue)
print(s_array)
#结果
100
bytearray(b'Hello worl')
  • find(sub[, start[, end]]): 返回子字节序列首次出现的索引,如果没有找到则返回-1。
print(s_array.find(b'H'))
print(s_array.find(100))
#结果
0
10
  • index(sub[, start[, end]]): 返回子字节序列首次出现的索引,如果没有找到则引发 ValueError。
#查找字符d的索引位置
print(s_array.index(100))
#结果
10
  • count(sub[, start[, end]]): 返回子字节序列出现的次数。
#查找字母l出现的次数
print(s_array.count(b'l'))
#结果
3
  • replace(old, new[, count]): 替换字节序列中的字节并返回新字节数组,不修改原字节数组。
#修改字符H为字符Q
s_array_new = s_array.replace(b'H',b'Q')
print(s_array_new)
print(s_array)
#结果
bytearray(b'Qello world')
bytearray(b'Hello world')
  • translate(table[, delete]): 使用转换表进行转换,并可以删除指定字节。跟replace函数一样返回新字节数组,不修改原字节数组。

translate功能类似于字符串str中的功能,也是先使用maketrans创建替换的表(只传两个参数,第一个是需要替换的值,第二个是替换后的值),然后作为参数传入translate函数。

#修改字符H为字符Q,并删除字符o
s_array_new=s_array.translate(s_array.maketrans(b'H',b'Q'),b'o')
print(s_array_new)
print(s_array)
#结果
bytearray(b'Qell wrld')
bytearray(b'Hello world')

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习和关注,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将视觉语言模型训练为智能手机助手

24年4月Agile Loop和德国弗赖堡大学的论文“Training A Vision Language Model As Smartphone Assistant”。 为了解决能够执行各种用户任务的数字助理挑战,该研究重点是基于指令的移动设备控制域。 用大语言模型 (LLM) 的最新进展,本文提出一种可以在移…

免费思维13招之十:增值型思维

免费思维13招之十:增值型思维 免费思维的另一大战略思维——增值型思维。 为了提高客户的粘性而促进重复性消费,我们必须对客户进行免费的增值型服务。 大家不要把增值型思维与赠品型思维混淆,增值型思维重心在于提高与消费者的粘性而促进重复消费,重心在后端。而赠品型思…

2024最新独立版校园跑腿校园社区小程序源码+附教程 适合跑腿,外卖,表白,二手,快递等校园服务

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 后台php,前端uniapp可以二次开 2024最新独立版校园跑腿校园社区小程序源码附教程 测试环境:NginxPHP7.2MySQL5.6 多校版本,多模块,适…

从iconfont引入线上字体库

如果是长期使用建议直接下载字体包 /* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */ 例如使用阿里妈妈数黑体 https://www.iconfont.cn/fonts/detail?spma313x.fonts_index.i1.d9df…

数据库面试总结

数据库相关 mysql使用的函数 字符相关: concant() 连接字符 trim()去除字符的首尾空格 space(n) 返回n个空格 char_length() 返回字符的个数 ucase()/upper()将字符串 s 的所有字母变成大写字母 lcase()/lower() 将字符串 s 的所有字母变成小写字母 substr/substring/mid(s, …

卷积神经网络边缘识别

为什卷积神经网络能够识别图片呢?是基于图片相似度比较,两张图片的点击越大说明两张图片越像,比如我们那狗胡子的图片去比较,如果相似度很高,就是认为这个动物更像狗。点积越大,图片越相似,这个…

vivado Virtex UltraScale 配置存储器器件

Virtex UltraScale 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex UltraScale ™ 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失…

第三课,python基础语法(二),基本算术运算符、3种数据类型、变量命名规则

一,基本算术运算 数学中:,-,, *小练习 请在程序中,定义如下变量: 钱包余额(变量名:money),初始余额50 请通过程序计算,再购买了: 冰淇淋10元可…

荷香堪筑梦,鸳鸯和月寻。(变相BFS搜索)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 4 2 .... ***. ..a. 输出 yes 思路: 根据题意,这里 1 s 可以移动多次,我们将每次可以移动避开雪的的位置存储起来,判断当…

地埋式可燃气体监测终端,地下燃气管网安全“哨兵”

在现代都市的繁华之下,一条条地下燃气管网承载着城市的生命与活力,但管网老化腐蚀,第三方施工破坏,巡检维修不到位等问题,时刻影响着燃气管网安全运行,甚至威胁人民群众的生命财产安全。 为实现对燃气管网…

代码随想录第五十一天|最长递增子序列、最长连续递增序列、最长重复子数组

题目链接:. - 力扣(LeetCode) 题目链接:. - 力扣(LeetCode) 题目链接:. - 力扣(LeetCode)

【数据库原理及应用】期末复习汇总高校期末真题试卷11

试卷 一、填空题(每题 1 分,共10 分)    1. 数据库管理技术的发展经历了三个阶段:人工管理阶段,文件系统阶段和__________阶段。 2.实体完整性约束规定__________的取值不能为空值。 3. 计算机系统有三类安全性问题,即_____…

企业使用合同档案管理系统软件有什么好处

使用合同档案管理系统软件可以带来以下好处: 1. 提高效率:合同管理软件可以自动化合同流程,包括创建、审批、签署和归档等。通过自动化,可以节省大量时间和精力,提高工作效率。 2. 降低风险:玖拓档案合同管…

3.使用uView让tabbar更优雅

文章目录 1. 使用uView让tabbar更优雅1.1. 怎么才优雅?1.2. uView的tabbar合适吗?1.3. 引入项目过程1.3.1. 修改pages.json1.3.2. 把demo里面的pages先拷贝过来1.3.3. 引入tabbar的图片1.3.4. 运行 1.4. 我们自己的项目适配 1. 使用uView让tabbar更优雅 …

【算法】滑动窗口——最小覆盖子串

本节博客是对“最小覆盖子串”题目由暴力求解到滑动窗口的思路解析,有需要借鉴即可。 目录 1.题目2.滑动窗口解法3.总结 1.题目 题目链接:LINK 这个题目是困难难度,感觉是一个中等题目的感觉。 首先我肯定想到的是暴力求解的方法&#xff…

C++:STL-string

前言 本文主要介绍STL六大组件中的容器之一:string,在学习C的过程中,我们要将C视为一个语言联邦(摘录于Effective C条款一)。如何理解这句话呢,我们学习C,可将其分为四个板块;分别为…

数据降维-主成分分析PCA

1.背景: 在以前计算能力还很弱的年代,我们要分析经济数据是一件很困难的事情,所以我们需要对指标特征进行降维; 2.数据降维的意义: 一般我们降维的特征数据彼此之间是存在一定的相关性的, 二维降至一维…

2024年区块链、信号处理与航空航天国际学术会议(ICBSPA 2024)

2024年区块链、信号处理与航空航天国际学术会议(ICBSPA 2024) 2024 International Conference on Blockchain, Signal Processing, and Aerospace 一、【会议简介】 随着科技的飞速发展,区块链、信号处理与航空航天等领域的交叉融合正成为推动科技进步的…

【代码随想录】【动态规划】背包问题 - 完全背包

完全背包 模板:完全背包问题 问题描述 完全背包问题与01背包问题唯一的区别在于: 在01背包中:每个物品只有一个,要么放入背包,要么不放入背包在完全背包中:每个物品有无限多个,可以不放入背…

卓豪Zoho CRM怎么收费?多少钱一年?

卓豪Zoho CRM作为一款功能强大且高度可定制的企业级客户关系管理系统,其收费标准因版本不同而有所差异,旨在满足不同规模及需求的企业。Zoho CRM提供多种套餐选择,包括但不限于免费版、标准版、专业版、企业版以及旗舰版。每种版本都包含了核…