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循环语句中else的用法总结
Sep 11 Python
你真的了解Python的random模块吗?
Dec 12 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
python3.6实现学生信息管理系统
Feb 21 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
python scrapy重复执行实现代码详解
Dec 28 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 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
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
python将ip地址转换成整数的方法
2015/03/17 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
怎样创建、运行java程序
2014/08/01 面试题
请假条格式范文
2014/04/10 职场文书
大学生实习证明范本
2014/09/19 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
职工宿舍管理制度
2015/08/05 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫