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 13 Python
详谈python read readline readlines的区别
Sep 22 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Scrapy框架使用的基本知识
Oct 21 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
python虚拟环境模块venv使用及示例
Mar 04 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
python如何安装下载后的模块
Jul 03 Python
python使用建议技巧分享(三)
Aug 18 Python
python自动化之如何利用allure生成测试报告
May 02 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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日历程序
2006/12/06 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php中几种常见安全设置详解
2010/04/06 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
语义化 H1 标签
2008/01/14 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
python如何重载模块实例解析
2018/01/25 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
安全负责人任命书
2014/06/06 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL