详解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之Python安装
Sep 12 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
浅析Python 序列化与反序列化
Aug 05 Python
Python实现随机爬山算法
Jan 29 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
详解Python中下划线的5种含义
Jul 15 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重定向的3种方式
2013/03/07 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
javascript数字时钟示例分享
2014/04/23 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
node中的session的具体使用
2018/09/14 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python学习小技巧之列表项的排序
2017/05/20 Python
Python学生信息管理系统修改版
2018/03/13 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python callable内置函数原理解析
2020/03/05 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
简单说说tomcat的配置
2013/05/28 面试题
材料加工硕士生求职信
2013/10/10 职场文书
室内设计自我鉴定
2013/10/15 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
区域经理岗位职责
2015/02/02 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
2015年教师节感言
2015/08/03 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis