bytes、bytearray

Python3引入两个新类型

  • bytes:不可变字节序列
  • bytearray:字节数组、可变

字符串与bytes

字符串是字符组成的有序序列,字符可以使用编码来理解

bytes是字节组成的有序的不可变序列

bytearray是字节组成的有序的可变序列

编码与解码

字符串按照不同的字符集编码encode返回字节序列bytes

encode(encoding='utf-8', errors='strict') -> bytes

字节序列按照不同的字符集解码decode返回字符串

bytes.decode(encoding="utf-8", errors="strict") -> str

bytearray.decode(encoding="utf-8", errors="strict") -> str

bytes定义

bytes() 空bytes

a = bytes()
print(type(a))  #<class 'bytes'>

bytes(int) 指定字节的bytes,被0填充

a = bytes(4)
print(a)  #b'\x00\x00\x00\x00'

bytes(iterable_of_ints) -> bytes [0,255]的int组成的可迭代对象

a = bytes(range(3))
print(a)  #b'\x00\x01\x02'

bytes(string, encoding[, errors]) -> bytes 等价于string.encode()

print(bytes("abc","utf8"))  #b'abc'
print("abc".encode("utf8"))    #b'abc'

bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer 从一个字节序列或者buffer复制出 一个新的【相当于前copy】

a = "abc".encode("utf8")
b = bytes(a)
print(id(a) == id(b))  #True

bytes操作【注意:下述方法若需要使用int类型,值在[0, 255]

和str类型类似,都是不可变类型,所以方法很多都一样。只不过bytes的方法,输入是bytes,输出是 bytes

a.split()  #切割

a = bytes("abc","utf8")
print(a.split(b"b"))   #[b'a', b'c']

类方法 bytes.fromhex(string)

  • string必须是2个字符的16进制的形式,'6162 6a 6b',空格将被忽略
print(bytes.fromhex('6162 09 6a 6b00'))  #b'ab\tjk\x00'

返回16进制表示的字符串


print("abc".encode("utf8").hex())  #616263

索引


print("abc".encode("utf8")[1])  #98

bytearray定义

bytearray

bytearray() 空bytearray

a = bytearray()
print(type(a))  #<class 'bytearray'>

bytearray(int) 指定字节的bytearray,被0填充

a = bytearray(5)
print(a)  #bytearray(b'\x00\x00\x00\x00\x00')

bytearray(iterable_of_ints) -> bytearray [0,255]的int组成的可迭代对象

a = bytearray(range(3))
print(a)  #bytearray(b'\x00\x01\x02')

bytearray(string, encoding[, errors]) -> bytearray 近似string.encode(),不过返回可变对象

a = bytearray("abc","utf8")
print(a)  #bytearray(b'abc')

bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变的bytearray对象

a = bytearray("abc","utf8")
b = bytearray(a)
print(b)  #bytearray(b'abc')

bytearray操作【注意:下述方法若需要使用int类型,值在[0, 255]

和bytes类型的方法相同

print(bytearray(b'abcdef').replace(b'f',b'k'))  #bytearray(b'abcdek')
bytearray(b'abc').find(b'b')  #1

类方法 bytearray.fromhex(string)

  • string必须是2个字符的16进制的形式,'6162 6a 6b',空格将被忽略
print(bytearray.fromhex('6162 09 6a 6b00')) #bytearray(b'ab\tjk\x00')

hex()  #返回16进制表示的字符串

print(bytearray('abc'.encode()).hex()) #616263

索引

print(bytearray(b'abcdef')[2]) #99

append(int) 尾部追加一个元素

b = bytearray()
b.append(97)
print(b)  #bytearray(b'a')

insert(index, int) 在指定索引位置插入元素

b = bytearray()
b.append(97)
b.insert(1,98)
print(b)  #bytearray(b'ab')

 extend(iterable_of_ints) 将一个可迭代的整数集合追加到 当前bytearray

b = bytearray()
b.append(97)
b.insert(1,98)
b.extend([65,66,67])
print(b)  #bytearray(b'ab')  #bytearray(b'abABC')

pop(index=-1) 从指定索引上移除元素,默认从尾部移除

b = bytearray()
b.append(97)
b.insert(1,98)
b.extend([65,66,67])
b.pop(-1)
print(b)  #bytearray(b'abAB')

remove(value) 找到第一个value移除,找不到抛 ValueError异常

b = bytearray()
b.append(97)
b.insert(1,98)
b.extend([65,66,67])
b.pop(-1)
b.remove(66)
print(b)  #bytearray(b'abA')    

clear() 清空bytearray

b = bytearray()
b.append(97)
b.insert(1,98)
b.extend([65,66,67])
b.pop(-1)
b.remove(66)
b.reverse()
b.clear()
print(b)  #bytearray(b'')

reverse() 翻转bytearray,就地修改

b = bytearray()
b.append(97)
b.insert(1,98)
b.extend([65,66,67])
b.pop(-1)
b.remove(66)
b.reverse()
print(b)  #bytearray(b'Aba')

Python:bytes、bytearray相关推荐

  1. Python: bytes、bytearray 详解

    文章目录 写在开头的话 Python: bytes.bytearray 00. 概述 01.bytes定义 02. bytes操作 03. bytearray定义 04. bytearray操作 05 ...

  2. python入门学习[看漫画学Python:有趣、有料、好玩、好用读书笔记]

    写在前面:本文中绝大多数图片来源于图书:看漫画学Python:有趣.有料.好玩.好用,本文仅供个人学习使用,如有侵权,请联系删除. 学习编程语言最好的方式就是多写,多写,多写!!!哪有什么快速掌握,能 ...

  3. Python:列表、集合等交集、并集、差集、非集简介及其代码实现之详细攻略

    Python:列表.集合等交集.并集.差集.非集简介及其代码实现之详细攻略 目录 列表.集合等交集.并集.差集.非集简介及其代码实现之详细攻略 1.交集:A & B & C & ...

  4. 循序渐进学Python:安装、使用与运行程序

    Python这种语言的相关技术正在飞速的发展,用户数量急剧扩大,本文向读者介绍Python编程的有关知识. [51CTO.com独家特稿]Python是一种功能强大的解释执行自动编译的动态型语言,面向 ...

  5. python:容器、迭代器、生成器 简单介绍

    python:容器.迭代器.生成器 简单介绍 python提供了多种数据类型来存放数据项. 之前已经介绍了几个python中常用的容器,分别是列表list.元组tuple.字典dict和集合set. ...

  6. 【社区图书馆】《看漫画学Python:有趣、有料、好玩、好用(全彩修订版)》

    背景 Python是一门既简单又强大的编程语言,被广泛应用于数据分析.大数据.网络爬虫.自动化运维.科学计算和人工智能等领域.Python也越来越重要,成为国家计算机等级考试科目,某些中小学也开设了P ...

  7. Python 数据类型 bytes 与 bytearray 使用教程

    bytes 与 bytearray 是python非常重要的数据类型,但其重要性经常被我们忽视了.在实际开发过程中,又总是遇到 bytes 类型.举例,pickle 序列化, json序列化就是将对象 ...

  8. 零基础入门Python:基本命令、函数、数据结构

    导读:本文对Python的基本使用做一个简单的介绍.限于篇幅,本文不可能详细讲解Python的使用,只是针对本书涉及的数据挖掘案例所用到的代码进行基本讲解.如果读者是初步接触Python,并且使用Py ...

  9. Python:[-1]、[:-1]、[::-1]、[n::-1] 原理大详解(超全超仔细!)

    Python中切片原理 0 下标说明 无论是str还是list等,从左到右下标从0开始,从右到左下标从-1开始 如:str = 'python',下标示意图如下: 1 两参数:[开始:结束] 知识点1 ...

最新文章

  1. displaysettings.java_Android设置系统开机自动永不休眠
  2. python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法
  3. java垃圾回收机制_JVM的垃圾回收机制——垃圾回收算法
  4. 处理大并发之四 libevent demo详细分析(对比epoll)
  5. 软件测试mysql基础面试题_测试面试题合集之数据库
  6. MyEclipse部署Web项目Servers报错:NullPointerException at com.genuitec.eclipse.ast.deploy.core.Deployment
  7. 微信小程序 - 文字收缩与展开
  8. php得到第一个数组_php怎么获取数组第一个元素
  9. 2014全国计算机等级考试四级数据库工程师考试大纲,4月全国计算机等级考试四级数据库工程师笔试试卷(1)...
  10. tcs标准编写软件_标准编写工具TCS2017使用指南.PDF
  11. Eclipse语言包的安装与卸载
  12. Android开发中的Java包的定义
  13. Android UI绘制流程源码详细讲解Draw(Canvas canvas)
  14. 男生和女生的十个瞬间 (温馨啊)【转载】
  15. Druid java.sql.SQLException: 违反协议 / Oracle连接报错生违反协议
  16. 修改 IDEA 中 @author 默认值
  17. 毕设中常出现的定性检验与定量检验的方法及误差指标计算公式【自用】
  18. 《软件工程导论第6版》--张海藩 牟永敏 课后答案及其详解 第5章 总体设计
  19. linux 7 删除mtab内容,centos7之文件搜索及sed文本处理
  20. iOS开发教你怎么集成ApplePay

热门文章

  1. 安卓AlertDialog弹窗
  2. 使用华为hd255进行路由中继
  3. 修改NSScrollView滚动条的颜色
  4. python制作小人,[Python设计模式] 第13章 造小人——建造者模式
  5. 通服数聚-华为云Stack8.0兼容性认证完成
  6. vue动态生成多级树结构
  7. *Directx中应用高度图(转)
  8. linux自动补全死机,ubuntu_linux自动补全出现问题
  9. FPGA开发技巧备忘录——大量相同类型IP核仿真时tcl简化写法
  10. [转载]你的四金到底有多少?