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 list操作用法总结
Nov 10 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python写入已存在的excel数据实例
May 03 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
pycharm debug 断点调试心得分享
Apr 16 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
Python编写nmap扫描工具
Jul 21 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php自定义分页类完整实例
2015/12/25 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Python中的index()方法使用教程
2015/05/18 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
如何用python整理附件
2018/05/13 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python字典按照value排序方法
2020/12/28 Python
python中uuid模块实例浅析
2020/12/29 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
给领导的致歉信范文
2014/01/13 职场文书
个性婚礼策划方案
2014/05/17 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
高中班主任培训心得体会
2016/01/07 职场文书