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.hqwc.cn/news/696424.html

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

相关文章

百度云防护502 Bad Gateway原因总结和处理方法

最近,随着原百度云加速用户新接入百度云防护后,很多站长反馈网站打不开,出现了502 Bad Gateway的情况。 为此,百度云这里给大家总结下,出现502的大概几个原因: 1.服务器防火墙拦截了百度云防护的IP节点请求…

水库大坝安全监测预警系统解决方案介绍

一、方案背景 随着社会的快速发展,水库大坝作为重要的水利工程设施,承载着防洪、灌溉、发电等多重功能。然而水库大坝的安全问题也日益凸显,一旦发生事故,后果将不堪设想,因此,建立一套高效、准确的水库大…

YOLO使用笔记

下载oss命令工具。 在OSS.exe文件下打开Power Shell, 输入指令: ./oss login之后输入用户名和密码。 选择将你想要上传的文件导入: ./oss cp {yourdir} oss://进入服务器实例中,打开终端下载数据 同样输入:oss login 进行登录。 登录成功…

vs-qt中无法加载qsqlite驱动,但是单独新建demo测试却又是正常的。。。

开发环境: Vs2015 + qt5.12 背景: 接手了一个项目,可以编译过去,也可以运行,, 但是登录一直失败,,但是数据库文件也是正常的。。。 最主要的是环境和同事的是一样的,,,但是他那边可以加载成功,我这边不可以。。 后来单独在vs中创建了一个demo,用来测试QSqlData…

【AIGC】Mac Intel 本地 LLM 部署经验汇总(CPU Only)

书接上文,在《【AIGC】本地部署 ollama(gguf) 与项目整合》章节的最后,我在 ollama 中部署 qwen1_5-14b-chat-q4_k_m.gguf 预量化模型,在非 Stream 模式下需要 89 秒才完成一轮问答,响应速度实在是太慢,后续需要想办法…

C++进阶 | [3] 续 | 搜索二叉树的两种模型

摘要:搜索二叉树的效率,搜索二叉树的两种搜索模型及应用举例 前面一片文章学习了并实现了搜索二叉树,这篇将从实际应用的角度进一步介绍搜索二叉树。 1. 搜索二叉树的效率 平衡搜索二叉树 BST的查找效率是 O(N)。 分析:如右图所示…

WWW服务器搭建(2)——Apache服务器配置与管理

一、Apache简介 1.1 关于Apache Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的Web服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。…

爆款小红书免费流量体系课程(两周变现),小红书电商教程

课程下载:小红书电商教程-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 10-爆款标题(三段式取标题).mp3 11-爆款封面怎么作图.mp3 12-爆款内容的模板(三段式模板).mp3 13-小红书流量推荐背后的秘密(四大流…

P6397 [COI2008] GLASNICI

题目描述 一条直线上有 &#x1d45b; 个信使&#xff0c;将他们按照从左至右的顺序以 1 至 &#x1d45b; 编号。换句话说&#xff0c;设 &#x1d456; 号信使的的坐标为 &#x1d451;&#x1d456;​&#xff0c;则对于 1≤&#x1d456;<&#x1d45b;&#xff0c; &am…

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式&#xff0c;第一种是使用ubuntu镜像源的软件包进行安装&#xff0c;第二种使用官方GPG密钥手动添加Docker存储库方式进行安装&#xff0c;两种方式都可以&#xff0c;但第二种方式略复杂&#xff0c;这里介绍第一种比较简单的安装方式…

保研机试之【同步操作】

我们先来看一下这六个选项是什么意思&#xff1a; 思考一下&#xff0c;给出你的答案~ 再来总结一下六个选项的考点&#xff1a; 我认为答案选择B&#xff0c;因为&#xff08;延迟敏感&#xff09;&#xff08;短&#xff09;&#xff08;更新&#xff09;

让 计算机 将 数学 公式 表达式 的计算过程绘制出来 【mathematical-expression(MAE)】

目录 文章目录 目录介绍开始实战引入数学表达式计算库引入流程图代码生成库开始进行生成 介绍 大家好 今天我们来分享一个新知识&#xff0c;将数学表达式的整个计算过程&#xff0c;以及计算繁多结果在 Java 中绘制出来&#xff0c;计算机中的数学表达式计算的功能很常见了&a…