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实现360的字符显示界面
Feb 21 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Python算法应用实战之队列详解
Feb 04 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
使用python生成目录树
Mar 29 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
python如何删除列为空的行
Jul 17 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
python音频处理的示例详解
Dec 23 Python
Python 求向量的余弦值操作
Mar 04 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
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
利用js对象弹出一个层
2008/03/26 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
浅析Python中的多条件排序实现
2016/06/07 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python小白学习包管理器pip安装
2020/06/09 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
安全生产先进个人总结
2015/02/15 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
雷锋观后感
2015/06/10 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL