【python学习】bytearray 数组
在Python中,bytearray 是一个可变序列,用于表示一个字节数组。与不可变的 bytes 类型相比,bytearray 允许你修改其内容。你可以通过索引来访问和修改 bytearray 中的元素,也可以添加或删除元素。
使用 bytearray 的一些示例:
# 创建一个空的 bytearrayba = bytearray()print(ba) # 输出: bytearray(b'')# 创建一个包含初始值的 bytearrayba = bytearray([0x11, 0x22, 0x33])print(ba) # 输出: bytearray(b'\x11\x22\x33')# 访问 bytearray 中的元素print(ba[0]) # 输出: 17(0x11 的十进制表示)# 修改 bytearray 中的元素ba[1] = 0x44print(ba) # 输出: bytearray(b'\x11D\x33'),其中 'D' 是 0x44 的 ASCII 字符# 添加元素到 bytearray 的末尾ba.append(0x55)print(ba) # 输出: bytearray(b'\x11D\x33U'),其中 'U' 是 0x55 的 ASCII 字符# 从 bytearray 中删除元素del ba[2]print(ba) # 输出: bytearray(b'\x11D\x55')# 将 bytes 转换为 bytearrayb = b'\x01\x02\x03'ba = bytearray(b)print(ba) # 输出: bytearray(b'\x01\x02\x03')# 将 bytearray 转换为 bytesb = bytes(ba)print(b) # 输出: b'\x01\x02\x03'
在上面的示例中,你可以看到如何使用 bytearray 来存储和操作字节序列。这对于需要频繁修改字节数据的场景特别有用,因为 bytes 类型是不可变的,每次修改都需要创建一个新的 bytes 对象。而 bytearray 允许你原地修改数据,从而提高性能。
数组的长度:
# 创建一个bytearray
app_buf = bytearray([0x11, 0x22, 0x33]) # 输出bytearray的长度
print(len(app_buf)) # 输出: 3
数组打印
注意:如果数组里的内容为 字符直接用print 打印就会直接打印成字符!例如
ba[1] = 0x44 print(ba) # 输出: bytearray(b'\x11D\x33'),其中 'D' 是 0x44 的 ASCII 字符
十六进制方式打印数组
要以十六进制的方式打印bytearray中的每个字节,你可以使用列表推导式(list comprehension)结合format函数或f-string(格式化字符串字面量)来格式化每个字节。以下是一些示例:
使用循环和直接打印:
app1_buf = bytearray([0x11,0x23,0x63])
for byte in app1_buf:print(f"{byte:02X}", end=' ')
使用列表推导式和format函数:
app_buf = bytearray([0x11, 0x22, 0x33])
hex_values = ['{:02X}'.format(byte) for byte in app_buf]
print(' '.join(hex_values)) # 输出: 11 22 33
使用列表推导式和f-string(Python 3.6+):
app_buf = bytearray([0x11, 0x22, 0x33])hex_values = [f'{byte:02X}' for byte in app_buf]print(' '.join(hex_values)) # 输出: 11 22 33
在这两个示例中,我们都创建了一个列表推导式来遍历bytearray中的每个字节,并使用format函数或f-string将其格式化为两位的十六进制字符串。然后,我们使用join方法将这些字符串连接成一个用空格分隔的字符串,并打印出来。
十进制打印数组
如果你想要以十进制的方式打印bytearray中的每个字节,你可以直接遍历bytearray并打印每个字节的值,因为Python在默认情况下会以十进制打印小的整数。但是,如果你想要确保它们是作为十进制数明确显示的(特别是当与其他数据混合时),你可以使用format函数或f-string来指定格式。
以下是一些示例:
使用循环和直接打印:
app_buf = bytearray([0x11, 0x22, 0x33])
for byte in app_buf:
print(byte) # 直接打印,默认为十进制
# 输出:
# 17
# 34
# 51
使用列表推导式和format函数(虽然在这种情况下可能不是必需的,但为了一致性):
app_buf = bytearray([0x11, 0x22, 0x33])
decimal_values = ['{}'.format(byte) for byte in app_buf]
print(' '.join(decimal_values)) # 使用' '连接成字符串
# 输出: 17 34 51
使用列表推导式和f-string:
app_buf = bytearray([0x11, 0x22, 0x33])decimal_values = [f'{byte}' for byte in app_buf]print(' '.join(decimal_values)) # 使用' '连接成字符串# 输出: 17 34 51
在这些示例中,你可以看到如何遍历bytearray中的每个字节,并直接打印它们(默认为十进制),或者使用列表推导式和字符串格式化来创建一个包含十进制值的字符串列表,然后将其连接成一个用空格分隔的字符串。
相关文章:
【python学习】bytearray 数组
在Python中,bytearray 是一个可变序列,用于表示一个字节数组。与不可变的 bytes 类型相比,bytearray 允许你修改其内容。你可以通过索引来访问和修改 bytearray 中的元素,也可以添加或删除元素。 使用 bytearray 的一些示例&…...
Labview_Occurrencel(事件发生)
PS:这里遇到 一个很Low的事情: 在停止第二个while循环的时候出现了停止不了的情况。因为等待事件发生设置的超时时间为:-1。所以等事件发生后出现了条件接线端已经执行的情况,所以当下次事件发生时未能及时停止。初版的停止设置如下图&#x…...
天气网站爬虫及可视化
摘要:随着互联网的快速发展,人们对天气信息的需求也越来越高。本论文基于Python语言,设计并实现了一个天气网站爬虫及可视化系统。该系统通过网络爬虫技术从多个天气网站上获取实时的天气数据,并将数据进行清洗和存储。同时&#…...
【python - 数据】
一、序列 序列(sequence)是一组有顺序的值的集合,是计算机科学中的一个强大且基本的抽象概念。序列并不是特定内置类型或抽象数据表示的实例,而是一个包含不同类型数据间共享行为的集合。也就是说,序列有很多种类&…...
几种热管的构造
1、超薄热管构造形式 在实际应用中,超薄热管通常定义为厚度小于2.0mm的平板热管。超薄热管很薄,可紧贴电子元件表面散热,故被广泛应用于移动和可携带电子设备,如智能手机、笔记本电脑和智能手表。用于笔记本电脑和平板电脑的超薄…...
【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发
文章目录 一、效果展示二、简介三、安装Jib插件1、区分环境2、安装插件一、效果展示 本地是window系统,无docker环境,没有任何runtime,使用jib工具打包镜像并推送完成,用时20秒 二、简介 Jib 是 Google 开发的一款开源工具,旨在帮助 Java 开发者更高效地将 Java 应用程…...
【proteus经典实战】16X192点阵程序
一、简介 6X192点阵程序通常用于表示高分辨率图像或文字,其中16X表示像素阵列的宽度,192表示每个像素阵列中的点阵数,16X192点阵程序需要一定的编程知识和技能才能编写和调试,同时还需要考虑硬件设备的兼容性和性能等因素。 初始…...
小白上手AIGC-基于FC部署stable-diffusion
AIGC AIGC(人工智能创造内容)作为一种基于人工智能技术生成内容的新型创作模式。打破了过去大家对于AI的理解都是说只能涉足部分领域而无法涉足艺术或者是其他的创作领域的定律,现在的AIGC也能够创作内容了,而不再只是单纯的返回…...
一些指标的学习
1.平均倒数排名(MRR) 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说,它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅ᵄ…...
dledger原理源码分析系列(三)-选主
简介 dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的选主 关键词 Raft Openmessaging 心跳/选…...
如何修改PDF文档的作者名称?
要修改一个 PDF 文档的作者名称,你可以按照以下步骤进行操作: 1. **使用 Adobe Acrobat**(如果有): - Adobe Acrobat 是一个功能强大的 PDF 编辑工具,支持修改文档属性信息,包括作者名称。打开…...
从笔灵到AI去痕:全方位提升内容创作与学术诚信
内容为王,在内容创作的世界中尤为重要。然而,面对写作时常常感到无从下手:有时缺乏灵感,有时难以表达清楚自己的想法。AI写作助手的出现,为这些问题提供了创新的解决方案,极大地改变了内容创作的过程。 今…...
考试如果出现汉诺塔问题怎么办?
对于这道题来说 就按照测试案例里的数字进行输入 测试案例用100 那这三只鸡的具体最多能有多少只鸡呢? 用总数除以这只鸡的单价>>>>>>>即为这只鸡最多有 >>>>>>>> n / 单价 修改后 >>>>> 不只适…...
导出word模板开发记录
exportWordDocx.js import JSZipUtils from “jszip-utils” import Docxtemplater from “docxtemplater” import {saveAs} from “file-saver” import PizZip from “pizzip” const exportWordDocx (demoUrl, docxData, fileName) > {// 读取并获得模板文件的二进制…...
PHP爬虫类的并发与多线程处理技巧
PHP爬虫类的并发与多线程处理技巧 引言: 随着互联网的快速发展,大量的数据信息存储在各种网站上,获取这些数据已经成为很多业务场景下的需求。而爬虫作为一种自动化获取网络信息的工具,被广泛应用于数据采集、搜索引擎、舆情分析…...
用Python将PowerPoint演示文稿转换到图片和SVG
PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具,被广泛应用于教育、商务汇报及个人项目展示等领域。然而,面对不同的分享场景与接收者需求,有时需要我们将PPT内容以图片形式保存与传播。这样能够避免软件兼容性的限制&#x…...
机电公司管理小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,客户管理,公告管理,考勤管理,请假管理 微信端账号功能包括:系统首页,公告,机电零件&…...
SQL中的子查询和CTE(with ....as..)
第一次看到with as 这种类似于python中读文件的写法还是挺疑惑的,其实它是CTE,功能和子查询很类似但又有不同点,在实际应用场景中具有着独特作用。 子查询 子查询是在主查询中的嵌套查询,可以出现在SELECT、FROM、WHERE等子句中…...
Cesium 基本概念:创建实体和相机控制
基本概念 Entity // 创建一个实体 const entity_1 viewer.entities.add({position: new Cesium.Cartesian3(0, 0, 10000000),point: {pixelSize: 10,color: Cesium.Color.BLUE} });// 通过经纬度创建实体 const position Cesium.Cartesian3.fromDegrees(180.0, 0.0); // 创…...
vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果
效果图 效果链接:http://website.livequeen.top 介绍 一、Scrollreveal ScrollReveal 是一个 JavaScript 库,用于在元素进入/离开视口时轻松实现动画效果。 ScrollReveal 官网链接:ScrollReveal 二、animejs animejs是一个好用的动画库…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
