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实现删除Android工程中的冗余字符串
Jan 19 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
记一次django内存异常排查及解决方法
Aug 07 Python
使用Python实现音频双通道分离
Dec 25 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
python如何构建mock接口服务
Jan 28 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
js实现select下拉框选择
2020/01/11 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python while 循环使用的简单实例
2016/06/08 Python
Python中取整的几种方法小结
2017/01/06 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
python里运用私有属性和方法总结
2019/07/08 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
了解一下python内建模块collections
2020/09/07 Python
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
会计自荐书
2013/12/02 职场文书
演讲稿格式
2014/04/30 职场文书
主持人演讲稿
2014/05/13 职场文书
四风对照检查材料范文
2014/09/27 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
信用卡工作证明范本
2015/06/19 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle