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

【Python】bytes 和 bytearray 到底是什么类型呢?

bytesbytearray同属于二进制序列类型,是常见的数值类型的一种。
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同属于二进制序列类型&#xff0c;是常见的数值类型的一种。 bytes多用在在文件的读写、网络通信、数据编码/解码等场景用的比较多。 而bytearray在二进制数据处理、图像处理、内存映射文件和网络通信等场景用的比较多。 其中这两部分的主要差别&#xff1a; …...

Windows10上安装SQL Server 2022 Express

Microsoft SQL Server 2022 Express是一个功能强大且可靠的免费数据管理系统&#xff0c;可为轻量级网站和桌面应用程序提供丰富可靠的数据存储&#xff0c;为关系数据库&#xff1a; (1).LocalDB(SqlLocalDB)&#xff1a;是Express的一种轻型版本&#xff0c;该版本具备所有可…...

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&#xff1f; 2 使用方法2.1 依赖导入&#xff08;Maven&#xff09;2.2 常用注解2.3 使用步骤2.4 常用注解说明1&#xff09;EnableCaching2&#xff09;CachePut3&#xff09;Cacheable4&#xff09;CacheEvict 3 注意…...

在Windows编程中,MFC\C++中如何在OnCopyData中传递Vector类型数据?

我们在通过 WM_COPYDATA 消息实现进程间通信时&#xff0c;发送char 数组或其他类型数组与发送vector是有区别的。 1、发送基础类型时&#xff0c;直接发送指针。 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 常用的方法有哪些什么是单例模式&#xff1f;有几种&#xff1f;什么是反…...

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 完整代码 一、爬取目标 本次目标网站&#xff1a;百度翻译&#xff08;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…...

场外个股期权是什么品种?可以交易哪些品种?

今天带你了解场外个股期权是什么品种&#xff1f;可以交易哪些品种&#xff1f;场外个股期权是指在场外市场进行交易的个股期权合约&#xff0c;与在交易所交易的标准化个股期权有所不同&#xff0c;它是由买方和卖方通过私下协商&#xff0c;而非通过公开交易所进行买卖和定价…...

每日学术速递8.5-3

1.BoostMVSNeRFs: Boosting MVS-based NeRFs to Generalizable View Synthesis in Large-scale Scenes 标题&#xff1a; BoostMVSNeRFs&#xff1a;将基于 MVS 的 NeRFs 提升到大规模场景中的可泛化视图合成 作者&#xff1a;Chih-Hai Su, Chih-Yao Hu, Shr-Ruei Tsai, Jie-…...

C#针对kernel32.dll的一些常规使用

1、前言 Window是一个复杂的系统&#xff0c;kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数&#xff0c;提供了操作系统的基本功能。 2、Ini使用 Ini文件读写使用时&#xff0c;我们需要用到其中的一些函数对文件进行读写。 API&#xff1a; /// &l…...

电话营销机器人的优势

在人工智能的新趋势下&#xff0c;企业开始放弃传统外呼系统&#xff0c;转而使用电话销售机器人&#xff0c;那么使用机器人比坐席手动外呼好吗&#xff0c;真的可以代替人工坐席外呼吗&#xff0c;效率真的高吗&#xff1f; 1、 真人式语音 电话销售人员可以将自定义的话术…...

Oracle SQL Developer 连接第三方数据库

首先Oracle SQL Developer除了支持连接Oracle数据库外&#xff0c;还支持连接第三方数据库&#xff0c;包括&#xff1a; Amazon RedshiftHiveIBM DB2MySQLMicrosoft SQL ServerSybase Adaptive ServerPostgreSQLTeradataTimesTen 首先&#xff0c;你需要在菜单Tools > Pr…...

OSPF路由协议多区域

一、OSPF路由协议单区域的弊端 1、LSDB庞大,占用内存大,SPF计算开销大; 2、LSA洪泛范围大,拓扑变化影响范围大; 3、路由不能被汇总,路由表庞大,查找路由开销大。 二、如何解决OSPF单区域的问题? 引入划分区域 1、每个区域独立存储LSDB,划分区域减小了LSDB。 2、…...

8.5 C++

思维导图 试编程 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include <array>using namespace std;int main() {cout << "请输入一个字符…...

MySQL —— 初始数据库

数据库概念 在学习数据库之前&#xff0c;大家保存数据要么是在程序运行期间&#xff0c;例如&#xff1a;在学习编程语言的时候&#xff0c;大家写过的管理系统&#xff0c;运用一些简单的数据结构&#xff08;例如顺序表&#xff09;来组织数据&#xff0c;可是程序一旦结束…...

【JVM】垃圾回收机制、算法和垃圾回收器

什么是垃圾回收机制 为了让程序员更加专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也是我们常常提及的GC(Garbage Collection) 有了这个垃圾回收机制之后&#xff0c;程序员只需…...

大数据资源平台建设可行性研究方案(58页PPT)

方案介绍: 在当今信息化高速发展的时代&#xff0c;大数据已成为推动各行各业创新与转型的关键力量。为了充分利用大数据的潜在价值&#xff0c;构建一个高效、安全、可扩展的大数据资源平台显得尤为重要。通过本方案的实施企业可以显著提升数据处理能力、优化资源配置、促进业…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...