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中的filter和lambda函数的使用
Apr 07 Python
Python编程中的文件操作攻略
Oct 16 Python
Python网站验证码识别
Jan 25 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
对python中的高效迭代器函数详解
Oct 18 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
深入了解python列表(LIST)
Jun 08 Python
keras中的History对象用法
Jun 19 Python
Python实现8种常用抽样方法
Jun 27 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
我的论坛源代码(六)
2006/10/09 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
校运会宣传稿大全
2015/07/23 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
Python如何识别银行卡卡号?
2021/06/10 Python