详解python string类型 bytes类型 bytearray类型


Posted in Python onDecember 16, 2017

 一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。

str类型:

>>> s = u'你好'
 >>> s
 '你好'
 >>> type(s)
 <class 'str'>

bytes类型:

>>> b = b'abc'
 >>> b
 b'abc'
 >>> type(b)
 <class 'bytes'>

二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str

转换方式一:encode(),decode()

>>> a = u'你好'
 >>> b = a.encode('utf-8')
 >>> b
 b'\xe4\xbd\xa0\xe5\xa5\xbd'
 >>> type(b)
 <class 'bytes'>
 >>> new_a = b.decode('utf-8')
 >>> new_a
 '你好'
 >>> type(new_a)
 <class 'str'>

转换方式二:bytes(),str()

>>> a = u'你好'
 >>> b= bytes(a, encoding='utf-8')
 >>> b 
 b'\xe4\xbd\xa0\xe5\xa5\xbd'
 >>> type(b)
 <class 'bytes'>
 >>> new_a = str(b, encoding='utf-8')
 >>> new_a
 '你好'
 >>> type(new_a)
 <class 'str'>

三、bytearray类型

bytearray类是range 0 < = x < 256的一个可变序列。

可选的源参数可以用几种不同的方式来初始化数组:

•如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
•如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
•如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
•如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容
•如果没有参数,则创建一个大小为0的数组。

当源参数是一个字符串时:

>>> b = bytearray(u'你好', encoding='utf-8')
 >>> b
 bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
 >>> type(b)
 <class 'bytearray'>

当源参数是一个整数时:

>>> b = bytearray(5)
 >>> b
 bytearray(b'\x00\x00\x00\x00\x00')
 >>> type(b)
 <class 'bytearray'>

当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256:

>>> b = bytearray([1, 2, 3, 4, 255])
 >>> b
 bytearray(b'\x01\x02\x03\x04\xff')
 >>> type(b)
 <class 'bytearray'

四、bytes和bytearray区别

bytes是不可变的,同str。bytearray是可变的,同list。

>>> b = bytearray()
 >>> b
 bytearray(b'')
 >>> b.append(10)
 >>> b
 bytearray(b'\n')
 >>> b.append(100)
 >>> b
 bytearray(b'\nd')
 >>> b.remove(100)
 >>> b
 bytearray(b'\n')
 >>> b.insert(0, 150)
 >>> b
 bytearray(b'\x96\n')
 >>> b.extend([1, 3, 5])
 >>> b
 bytearray(b'\x96\n\x01\x03\x05')
 >>> b.pop(2)
 1
 >>> b
 bytearray(b'\x96\n\x03\x05')
 >>> b.reverse()
 >>> b
 bytearray(b'\x05\x03\n\x96')
 >>> b.clear()
 >>> b
 bytearray(b'')

五、bytes和 bytearray转换

>>> b = b'abcdef'
 >>> bay = bytearray(b)
 >>> bay
 bytearray(b'abcdef')
 >>> b = bytes(bay)
 >>> b
 b'abcdef'

六、bytearray和str转换

>>> a = 'abcdef'
 >>> b = bytearray(a, encoding='utf-8')
 >>> b
 bytearray(b'abcdef')
 >>> a = b.decode(encoding='utf-8')
 >>> a
 'abcdef'

总结

以上所述是小编给大家介绍的详解python string类型 bytes类型 bytearray类型,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python 中文乱码问题深入分析
Mar 13 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
如何获取Python简单for循环索引
Nov 21 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python实现简单贪吃蛇游戏
Sep 29 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 #Python
python读取与写入csv格式文件的示例代码
Dec 16 #Python
浅谈用VSCode写python的正确姿势
Dec 16 #Python
numpy中索引和切片详解
Dec 15 #Python
Python实现简单网页图片抓取完整代码实例
Dec 15 #Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 #Python
神经网络python源码分享
Dec 15 #Python
You might like
php print EOF实现方法
2009/05/21 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python在线运行代码助手
2016/07/15 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
django框架自定义用户表操作示例
2018/08/07 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
python同步两个文件夹下的内容
2019/08/29 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
什么是规则表达式
2012/05/03 面试题
生产部厂长助理职位说明书
2014/03/03 职场文书
毕业自我鉴定书
2014/03/24 职场文书
党员政治学习材料
2014/05/14 职场文书
校庆标语集锦
2014/06/25 职场文书
承诺书范本大全
2015/05/04 职场文书
工程质量保证书
2015/05/09 职场文书
暑假生活随笔
2015/08/15 职场文书
导游词之南京中山陵
2019/11/27 职场文书