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 cookielib 登录人人网的实现代码
Dec 19 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
python实现抖音点赞功能
Apr 07 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
python函数定义和调用过程详解
Feb 09 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python趣味爬虫之用Python实现智慧校园一键评教
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
memcache一致性hash的php实现方法
2015/03/05 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
php 数据结构之链表队列
2017/10/17 PHP
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
详解vue-router基本使用
2017/04/18 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
jquery实现广告上下滚动效果
2021/03/04 jQuery
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python测试人员需要掌握的知识
2018/02/08 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
小学教师自我鉴定
2013/11/07 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
法制教育观后感
2015/06/17 职场文书
教师个人教学反思
2016/02/23 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL