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程序的执行原理
Apr 11 Python
Python读大数据txt
Mar 28 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
Python笔记之facade模式
Nov 20 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
Flask搭建一个API服务器的步骤
May 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
Smarty安装配置方法
2008/04/10 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php 常用的系统函数
2017/02/07 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
php服务器的系统详解
2019/10/12 PHP
jquery模拟按下回车实现代码
2011/09/20 Javascript
javascript闭包的理解
2015/04/01 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python psutil库安装教程
2018/03/19 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
基于Python实现用户管理系统
2019/02/26 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python根据时间获取周数代码实例
2019/09/30 Python
Python的pygame安装教程详解
2020/02/10 Python
logging level级别介绍
2020/02/21 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
银行介绍信范文
2014/01/10 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js