详解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中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
通过python检测字符串的字母
Feb 18 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
OpenCV 之按位运算举例解析
Jun 19 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
十天学会php(3)
2006/10/09 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
实例讲解PHP表单处理
2019/02/15 PHP
js tab 选项卡
2009/04/26 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
vue实现计算器功能
2020/02/22 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
django页面跳转问题及注意事项
2019/07/18 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
临床护士自荐信
2014/01/31 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
经济管理专业求职信
2014/06/09 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
导游词之五台山
2019/10/11 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python