详解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牛刀小试密码爆破
Feb 03 Python
python定时器(Timer)用法简单实例
Jun 04 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python列表操作方法详解
Feb 09 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
使用Python pip怎么升级pip
Aug 11 Python
python如何写个俄罗斯方块
Nov 06 Python
python 基于Apscheduler实现定时任务
Dec 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
海贼王:最美的悬赏令!
2020/03/02 日漫
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
动态控制Table的js代码
2007/03/07 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python实现按行分割文件
2019/07/22 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python 监控logcat关键字功能
2020/09/04 Python
python 利用toapi库自动生成api
2020/10/19 Python
详解pandas映射与数据转换
2021/01/22 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
超市开业庆典策划方案
2014/05/14 职场文书
代收款委托书范本
2014/10/01 职场文书