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中的测试模块unittest和doctest的使用教程
Apr 14 Python
深入浅析python 中的匿名函数
May 21 Python
python实现定时提取实时日志程序
Jun 22 Python
python读取文本中的坐标方法
Oct 14 Python
基于python的ini配置文件操作工具类
Apr 24 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python实现把类当做字典来访问
Dec 16 Python
Python-opencv 双线性插值实例
Jan 17 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
python和php哪个容易学
Jun 19 Python
scrapy头部修改的方法详解
Dec 06 Python
Python中对象的比较操作==和is区别详析
Feb 12 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
Session保存到数据库的php类分享
2011/10/24 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
JavaScript中的this机制
2016/01/30 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Linux下python制作名片示例
2018/07/20 Python
python使用KNN算法识别手写数字
2019/04/25 Python
使用python实现简单五子棋游戏
2019/06/18 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python中while和for的区别总结
2019/06/28 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
大学生毕业鉴定
2014/01/31 职场文书
交通安全标语
2014/06/06 职场文书
学校安全防火方案
2014/06/07 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
企业整改报告范文
2014/11/08 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL