python中bytes和str类型的区别


Posted in Python onOctober 21, 2019

经过一上午的查找资料。大概理清楚了bytes类型和str类型的区别。

bytes类型和str类型在呈现形式有相同之处,如果你print一个bytes类型的变量,会打印一个用b开头,用单引号括起来的序列。比如:

>>> c = b'\x80abc'
>>> type(c)
bytes

我们看到c = b'\x80abc'表示的就是一个bytes类型。是不是和字符串很像?只是前面多出来一个b。那b'\x80abc的含义是什么呢?\x80即16进制的两位数,代表十进制的0-255,同时也代表一个字节,8个bit。abc,即英文字母abc,为什么这里不是\x...的形式呢。因为在utf-8里,一个ASCII码 的储存形式完全不变,一个a也就用一个字节来储存。

那么b'\x80abc'的储存情况就完全明白了,一共四个字节,每个字节值的情况一目了然。下面再做一个实验。

>>> A = b'\xe5\x9d\x8fHello'.decode("utf-8","strict")
>>> A
'坏Hello'
>>> type(A)
str

首先要知道utf-8是可变长编码。中文字符占3个字节,‘坏'字的utf-8码为\xe5\x9d\x8f 。那么给定一个bytes序列 b'\xe5\x9d\x8fHello', 用utf-8解码,显然能得到坏Hello。并且我们看到,解码之后,A已经变成了str类型,和预想一模一样。

假如python无法将一个二进制解码成utf-8码,则会报错。比如解码b'\x80abc'则会报错:

'utf-8' codec can't decode byte 0x80 in position 0:invalid start byte

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
通过shell+python实现企业微信预警
Mar 07 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
python实现简单飞行棋
Feb 06 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
python如何调用百度识图api
Sep 29 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 Python
python中@property和property函数常见使用方法示例
Oct 21 #Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 #Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 #Python
python打印直角三角形与等腰三角形实例代码
Oct 20 #Python
python配置文件写入过程详解
Oct 19 #Python
python实现广度优先搜索过程解析
Oct 19 #Python
python字符串格式化方式解析
Oct 19 #Python
You might like
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
python中pika模块问题的深入探究
2018/10/13 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
装修致歉信
2014/01/15 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
学生评语集锦
2015/01/04 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang