【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

在这里插入图片描述

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值