当前位置: 首页 > news >正文

【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.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅&#x1d44…...

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是一个好用的动画库…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 ​二、实现思路 总体思路: 用户通过Gradio界面上…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​:下载安装 ​​De…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...