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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
Python文件处理
Feb 29 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python中的pack和unpack的使用
Mar 12 Python
解决python线程卡死的问题
Feb 18 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
javascript 写类方式之四
2009/07/05 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
js中this用法实例详解
2015/05/05 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
Angular2 http jsonp的实例详解
2017/08/31 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
python实现电子词典
2020/04/23 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python实现3D地图可视化
2020/03/25 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
总经理助理岗位职责
2013/11/08 职场文书
汉语言文学职业规划
2014/02/14 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
Python 文字识别
2022/05/11 Python