详解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条件和循环的使用方法
Nov 01 Python
python显示天气预报
Mar 02 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
Python中的Django基本命令实例详解
Jul 15 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
python绘制规则网络图形实例
Dec 09 Python
centos7中安装python3.6.4的教程
Dec 11 Python
Python如何实现远程方法调用
Aug 07 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php url路由入门实例
2014/04/23 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php获取错误信息的方法
2015/07/17 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
php写app用的框架整理
2019/09/29 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
大专自我鉴定范文
2013/10/23 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python