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内置的字符串处理函数整理
Jan 29 Python
python实现保存网页到本地示例
Mar 16 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python requests post多层字典的方法
Dec 27 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
详解django2中关于时间处理策略
Mar 06 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
wxpython布局的实现方法
Nov 01 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
Linux系统下升级pip的完整步骤
Jan 31 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
python yield关键词案例测试
2019/10/15 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python定时截屏实现
2020/11/02 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
南京某软件公司的.net面试题
2015/11/30 面试题
测量实习生自我鉴定
2013/09/19 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Java实现带图形界面的聊天程序
2022/06/10 Java/Android