Python-字节序列【bytes、bytearray】

1、简介

Python3 引入两个新的类型bytes、bytearray。
bytes不可变字节序列;bytearray是可变字节数组。

2、编码与解码

2.1、编码

编码:str => bytes,将字符串这个字符序列使用指定字符集encode编码为一个个字节组成的序列bytes

2.2、解码

解码:bytes或bytearray => str,将一个个字节按照某种指定的字符集解码为一个个字符串组成的字符串

2.3、示例

print("abc".encode()) # 默认为utf-8
print("".encode('utf-8'))
print("".encode('gbk'))
print(b'abc'.decode('utf8'))
print(b'\xb0\xa1'.decode('gbk'))

3、ASCII

3.1、简介

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套单字节编码系统

3.2、编码图

3.3、熟记

复制代码
1、 \x00是ASCII表中第一项,C语言中的字符串结束符
2、 \t、\x09,表示tab字符
3、 \r\n是\x0d\x0a
4、 \x30~\x39 字符0~9,\x31是字符1
5、 \x41对应十进制65,表示A
6、 \x61对应十进制97,表示a
注意:这里的1指定是字符1,不是数字1
UTF-8、GBK都兼容了ASCII

'a\x09b\x0d\x0ac \x31\x41\x61' # ascii码,编码后的
'A' > 'a' # a大
复制代码

4、Bytes初始化

4.1、语法

复制代码
bytes() 空bytes
bytes(int) 指定字节的bytes,被0填充
bytes(iterable_of_ints) -> bytes [0,255]的int组成的可迭代对象
bytes(string, encoding[, errors]) -> bytes 等价于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象

使用b前缀定义 只允许基本ASCII使用字符形式b
'abc9' 使用16进制表示b"\x41\x61"
复制代码

4.2、示例

# bytes类型和str类型类似,都是不可变类型,操作方法类似。
print(b'abcd'[2]) # 返回int,指定是本字节对应的十进制数
x = b'\t\x09'
print(x, len(x))
y = br'\t\x09'
print(y, len(y))

5、bytearray初始化

5.1、语法

复制代码
bytearray() 空bytearray
bytearray(int) 指定字节的bytearray,被0填充
bytearray(iterable_of_ints) -> bytearray [0,255]的int组成的可迭代对象
bytearray(string, encoding[, errors]) -> bytearray 近似string.encode(),不过返回可变对象
bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变的bytearray对象

b前缀表示的是bytes,不是bytearray类型
由于bytearray类型是可变数组,所以,类似列表。 append(int) 尾部追加一个元素 insert(index, int) 在指定索引位置插入元素 extend(iterable_of_ints) 将一个可迭代的整数集合追加到当前bytearray pop(index
=-1) 从指定索引上移除元素,默认从尾部移除 remove(value) 找到第一个value移除,找不到抛ValueError异常 注意:上述方法若需要使用int类型,值在[0, 255] clear() 清空bytearray reverse() 翻转bytearray,就地修改
复制代码

5.2、示例 

复制代码
b = bytearray()
b.append(97)
b.append(99)
b.insert(1,98)
b.extend([65,66,67])
b.remove(66)
b.pop()
b.reverse()
print(b) # 输出什么
b.clear()
复制代码

 

posted @   小粉优化大师  阅读(554)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示