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 Socket实现简单TCP Server/client功能示例
Aug 05 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
使用Python实现音频双通道分离
Dec 25 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
python模块内置属性概念及实例
Feb 18 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
Python实现照片卡通化
Dec 06 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和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python制作词云的方法
2018/01/03 Python
Python使用wxPython实现计算器
2018/01/30 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
幼儿园安全责任书
2014/04/14 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书