【Python】bytes 和 bytearray 到底是什么类型呢?
bytes和bytearray同属于二进制序列类型,是常见的数值类型的一种。
bytes多用在在文件的读写、网络通信、数据编码/解码等场景用的比较多。
而bytearray在二进制数据处理、图像处理、内存映射文件和网络通信等场景用的比较多。
其中这两部分的主要差别:
bytes:不可变的字节序列,包含任意字节值(0-255)。bytearray:可变的字节序列。
1. 不可变的字节序列(bytes):
bytes 常见于读取网页源码返回的字节格式。例如下面的例子,就是:
url = 'http://example.com'
response = urllib.request.urlopen(url)
data = response.read()
print(type(data )) #<class 'bytes'>
返回的内容看起来是字符串,但是实际是字节流。
bytes 类型与 str 类型的主要区别在于:
bytes 是二进制数据,而 str 是文本数据。
在处理文本时,通常使用 str 类型;在处理二进制数据时,则使用 bytes 类型。
如果是自己创建bytes对象,以下是创建的常用方法:
- 1. 使用 b 前缀的字符串字面量:
b = b"Hello, World!"
print(b)
- 2. 使用 bytes() 构造函数:
# 从整数序列创建bytes对象
b = bytes([72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33])
print(b)
#结果: b'Hello, World!'# 从字符串创建bytes对象,默认使用ASCII编码
b = bytes("Hello, World!", 'ascii')
print(b)
# b'Hello, World!'
- 3. 使用 encode() 方法将字符串编码为bytes:
-这个部分在编码和解码方面使用比较多!
s = "Hello, World!"
b = s.encode('utf-8')
print(type(s),type(b))
#<class 'str'> <class 'bytes'>
- 4. 使用 bytes() 构造函数并传入一个数字,创建指定长度的零字节序列:
# 创建长度为10的bytes对象,所有字节都是0
b = bytes(10)
#結果:b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
2. 可变的字节序列( bytearray):
与 bytes 类型不同,bytearray 对象是允许修改其内容的。这意味着我们可以更改、添加或删除 bytearray 中的字节。
#创建方法示例:
ba = bytearray([71, 101, 108, 108, 111])
print(ba)
#结果:bytearray(b'Gello')#在上面元素上增加新的元素:
ba.append(44)
print(ba)
#结果:bytearray(b'Gello,')
修改方法:
append(): 向 bytearray 末尾添加单个元素。
extend(): 向 bytearray 末尾添加多个元素。
insert(): 在指定位置插入元素。
pop(): 移除并返回 bytearray 中的元素。
remove(): 移除 bytearray 中的第一个匹配元素。
clear(): 清空 bytearray 的所有内容。
以下是创建 bytearray 对象的常用方法:
- 1.使用 bytearray() 构造函数:
b = bytearray([72, 101, 108, 108, 111]) # 从整数序列创建
-2. 从字符串创建 bytearray 对象,并指定编码:
b = bytearray(“Hello”, ‘ascii’)
-3.从另一个 bytearray 或 bytes 对象创建:
b1 = bytearray([72, 101, 108, 108, 111]) b2 = bytearray(b1) #
创建b1的一个副本
-4.使用 bytearray() 构造函数并传入一个数字,创建指定长度的可变零字节序列:
b = bytearray(10) # 创建长度为10的bytearray对象,所有字节初始值都是0

相关文章:
【Python】bytes 和 bytearray 到底是什么类型呢?
bytes和bytearray同属于二进制序列类型,是常见的数值类型的一种。 bytes多用在在文件的读写、网络通信、数据编码/解码等场景用的比较多。 而bytearray在二进制数据处理、图像处理、内存映射文件和网络通信等场景用的比较多。 其中这两部分的主要差别: …...
Windows10上安装SQL Server 2022 Express
Microsoft SQL Server 2022 Express是一个功能强大且可靠的免费数据管理系统,可为轻量级网站和桌面应用程序提供丰富可靠的数据存储,为关系数据库: (1).LocalDB(SqlLocalDB):是Express的一种轻型版本,该版本具备所有可…...
C++11 异常
目录 0.前言 1.C语言传统错误处理方式 1.1使用返回值 1.2使用全局变量 1.3使用断言 1.4优缺点 2.C异常的概念 3.异常的使用 3.1异常的抛出和捕获 3.1.1异常的抛出和匹配原则 3.1.2在函数调用链中异常栈展开匹配原则 3.2异常的重新抛出 3.3异常安全 3.4异常规范 4.自定义异常体系…...
pip下载lap失败
把pip install lap改为pip intsall lapx...
【Material-UI】Button 中的点击事件处理(Handling clicks)详解
文章目录 一、点击事件处理基础1. 基本用法2. 事件处理器的传递 二、实际应用中的注意事项1. 事件处理逻辑的优化2. 避免过多的状态更新3. 使用合适的事件类型 三、关于文档中未提及的原生属性四、最佳实践1. 无障碍性2. 视觉反馈3. 防止重复点击 五、总结 在现代前端开发中&am…...
Spring Cache框架(AOP思想)+ Redis实现数据缓存
文章目录 1 简介1.1 基本介绍1.2 为什么要用 Spring Cache? 2 使用方法2.1 依赖导入(Maven)2.2 常用注解2.3 使用步骤2.4 常用注解说明1)EnableCaching2)CachePut3)Cacheable4)CacheEvict 3 注意…...
在Windows编程中,MFC\C++中如何在OnCopyData中传递Vector类型数据?
我们在通过 WM_COPYDATA 消息实现进程间通信时,发送char 数组或其他类型数组与发送vector是有区别的。 1、发送基础类型时,直接发送指针。 typedef struct tagMYSTRUCT {int nTest;wchar_t cTest[40] {0}; } MYSTRUCT, *PMYSTRUCT;MYSTRUCT stSend; s…...
Java常见面试题-01-java基础
文章目录 面向对象的特征Java 的基本数据类型有哪些JDK、JRE、JVM 的区别重载和重写的区别Java 中和 equals 的区别String、StringBuffer、StringBuilder 三者之间的区别接口和抽象类的区别是什么string 常用的方法有哪些什么是单例模式?有几种?什么是反…...
Python爬虫实战:利用代理IP爬取百度翻译
文章目录 一、爬取目标二、环境准备三、代理IP获取3.1 爬虫和代理IP的关系3.2 巨量IP介绍3.3 超值企业极速池推荐3.4 IP领取3.5 代码获取IP 四、爬虫代码实战4.1分析网页4.2 寻找接口4.3 参数构建4.4 完整代码 一、爬取目标 本次目标网站:百度翻译(http…...
Transformer学习之DETR
文章目录 1.算法简介1.1 算法主要贡献1.2 算法网络结构 2.损失函数设计2.1 二分图匹配(匈牙利算法)2.2 二分图匹配Loss_match2.3 训练Loss_Hungarian 3.网络核心模块3.1 BackBone模块3.2 空间位置编码(spatial positional encoding)3.2.1 输入与输出3.2.2 空间位置编码原理 3.3…...
场外个股期权是什么品种?可以交易哪些品种?
今天带你了解场外个股期权是什么品种?可以交易哪些品种?场外个股期权是指在场外市场进行交易的个股期权合约,与在交易所交易的标准化个股期权有所不同,它是由买方和卖方通过私下协商,而非通过公开交易所进行买卖和定价…...
每日学术速递8.5-3
1.BoostMVSNeRFs: Boosting MVS-based NeRFs to Generalizable View Synthesis in Large-scale Scenes 标题: BoostMVSNeRFs:将基于 MVS 的 NeRFs 提升到大规模场景中的可泛化视图合成 作者:Chih-Hai Su, Chih-Yao Hu, Shr-Ruei Tsai, Jie-…...
C#针对kernel32.dll的一些常规使用
1、前言 Window是一个复杂的系统,kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数,提供了操作系统的基本功能。 2、Ini使用 Ini文件读写使用时,我们需要用到其中的一些函数对文件进行读写。 API: /// &l…...
电话营销机器人的优势
在人工智能的新趋势下,企业开始放弃传统外呼系统,转而使用电话销售机器人,那么使用机器人比坐席手动外呼好吗,真的可以代替人工坐席外呼吗,效率真的高吗? 1、 真人式语音 电话销售人员可以将自定义的话术…...
Oracle SQL Developer 连接第三方数据库
首先Oracle SQL Developer除了支持连接Oracle数据库外,还支持连接第三方数据库,包括: Amazon RedshiftHiveIBM DB2MySQLMicrosoft SQL ServerSybase Adaptive ServerPostgreSQLTeradataTimesTen 首先,你需要在菜单Tools > Pr…...
OSPF路由协议多区域
一、OSPF路由协议单区域的弊端 1、LSDB庞大,占用内存大,SPF计算开销大; 2、LSA洪泛范围大,拓扑变化影响范围大; 3、路由不能被汇总,路由表庞大,查找路由开销大。 二、如何解决OSPF单区域的问题? 引入划分区域 1、每个区域独立存储LSDB,划分区域减小了LSDB。 2、…...
8.5 C++
思维导图 试编程 提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include <array>using namespace std;int main() {cout << "请输入一个字符…...
MySQL —— 初始数据库
数据库概念 在学习数据库之前,大家保存数据要么是在程序运行期间,例如:在学习编程语言的时候,大家写过的管理系统,运用一些简单的数据结构(例如顺序表)来组织数据,可是程序一旦结束…...
【JVM】垃圾回收机制、算法和垃圾回收器
什么是垃圾回收机制 为了让程序员更加专注于代码的实现,而不用过多的考虑内存释放的问题,所以在Java语言中,有了自动的垃圾回收机制,也是我们常常提及的GC(Garbage Collection) 有了这个垃圾回收机制之后,程序员只需…...
大数据资源平台建设可行性研究方案(58页PPT)
方案介绍: 在当今信息化高速发展的时代,大数据已成为推动各行各业创新与转型的关键力量。为了充分利用大数据的潜在价值,构建一个高效、安全、可扩展的大数据资源平台显得尤为重要。通过本方案的实施企业可以显著提升数据处理能力、优化资源配置、促进业…...
保姆级教程:用海康VM搞定机械臂90度旋转放置的坐标纠偏(附旋转计算模块配置)
工业视觉实战:海康VM在机械臂90度旋转放置中的坐标纠偏全解析 当机械臂在放置前需要旋转90度时,视觉引导系统输出的坐标往往会出现偏差。这个问题困扰着不少自动化工程师——明明标定做得一丝不苟,为什么实际放置时还是会出现偏移?…...
飞利浦PhilipsMP系列监护仪协议对接实战指南
1. 飞利浦PhilipsMP系列监护仪协议对接基础 第一次接触医疗设备协议对接的开发者,可能会觉得这是个神秘的黑盒子。其实飞利浦MP系列的协议对接并没有想象中那么复杂,关键是要理解它的通信逻辑。我最早接触MP20的时候也踩过不少坑,后来发现只要…...
树莓派4B上跑YOLOv8n:用NCNN实现实时目标检测的完整C++代码与踩坑实录
树莓派4B上跑YOLOv8n:用NCNN实现实时目标检测的完整C代码与踩坑实录 在边缘计算设备上部署深度学习模型一直是开发者面临的挑战,尤其是像树莓派4B这样资源有限的平台。本文将分享如何在树莓派4B上使用NCNN框架部署YOLOv8n模型,并实现实时目标…...
3大维度解锁Greasy Fork:让普通用户变身浏览器定制大师
3大维度解锁Greasy Fork:让普通用户变身浏览器定制大师 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 认知破局:重新认识浏览器脚本的真正价值 你是否曾因网页广…...
代码之外周刊(第期):当技术让一切趋同,我们还剩什么?渭
1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...
CosyVoice语音大模型快速部署:开箱即用,5分钟搭建个人语音合成系统
CosyVoice语音大模型快速部署:开箱即用,5分钟搭建个人语音合成系统 1. 为什么选择CosyVoice语音大模型 语音合成技术正在改变我们与数字世界的交互方式。CosyVoice作为阿里巴巴通义实验室研发的多语言语音生成模型,以其出色的自然度和易用性…...
【Linux开发】03Linux 线程同步:信号量(Semaphore)
一、问题:互斥量只能“锁”,不能“排队” 前面我们学习了互斥量,它可以解决多个线程同时访问共享资源的问题,保证同一时间只有一个线程进入临界区。但互斥量只能做到“互斥”,无法控制线程的执行顺序。 1.1 需要控制顺…...
UEFI固件分析工具:深度解析与定制指南
UEFI固件分析工具:深度解析与定制指南 【免费下载链接】UEFITOOL28 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITOOL28 UEFI固件(统一可扩展固件接口,用于初始化硬件的底层软件)分析是系统安全与硬件定制的关键环节…...
Qwen2.5-VL-7B-Instruct部署教程:国产化信创环境(昇腾/海光)适配可行性分析
Qwen2.5-VL-7B-Instruct部署教程:国产化信创环境(昇腾/海光)适配可行性分析 1. 项目背景与意义 Qwen2.5-VL-7B-Instruct作为阿里通义千问推出的多模态大模型,在图文理解和交互方面表现出色。随着国产化信创环境的普及࿰…...
无锁队列(Lock-Free Queue)
无锁队列原理 无锁队列(Lock-Free Queue)是一种基于无锁编程(Lock-Free Programming)技术实现的并发数据结构。它的核心思想是: 1.基础原理 使用 CAS(Compare-And-Swap,比较并交换)等…...
