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实现设置windows桌面壁纸代码分享
Mar 28 Python
PyMongo安装使用笔记
Apr 27 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
vscode 远程调试python的方法
Dec 01 Python
python方向键控制上下左右代码
Jan 20 Python
详解python中的time和datetime的常用方法
Jul 08 Python
python面向对象 反射原理解析
Aug 12 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
Python开发简易五子棋小游戏
May 02 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版自动生成文章摘要
2008/07/23 PHP
PHP Pear 安装及使用
2009/03/19 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
python爬虫面试宝典(常见问题)
2018/03/02 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
详解Python_shutil模块
2019/03/15 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
高一学生期末评语
2014/04/25 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
运动会通讯稿600字
2015/07/20 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python