bytes数据类型和字符串的编码解码,三元运算,进制互换
三元运算

如果这个条件成立就存这个值,如果那个条件成立就存那个值。

进制








bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是python2是不区分这个数据类型的。
比如说音频,视频文件都是二进制类型,也就是bytes类型。(python3通过socket在网络上传输数据时必须要用二进制格式,python2没有强制必须是二进制,字符串也可以)
Python3中最大的新特性就是对文本和二进制数据做了更清晰的区分。文本通常是Unicode字符集,并且用str字符串类型表示,而二进制数据用bytes字节类型表示。在Python3中,字符串str和字节bytes是不可以混合使用的,这也使得二者之间更以区分。你不能将字符串和字节连接起来,不能在字符串中得到字节,也不能在字节中得到字符串,也不能通过函数传参字符串以期望得到字节,反之亦然。
py3里,只有 unicode编码格式 的字节串才能叫作str。
其他编码格式的统统都叫bytes,如:gbk,utf-8,gb2312…………
这些bytes要转换为 unicode编码 才能当作str来用,就需要知道 bytes 的编码格式。
如果你事先知道,比如gbk,就可以用 bytes.decode('gbk')将bytes解码为unicode字符。
如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),
这时候,你就需要chardet 来测试它们的编码。
字符串和字节间是由区别的,下面的关系应该牢记在心:
字符串可被编码为字节,字节可被解码为字符串
可以这样考虑,字符串是文本的一种抽象表示。一个字符串有很多字符组成,字符是与任何特定二进制表示无关的抽象实体。处理字符串时,可以对其进行分割、切片、连接、搜索操作。我们不关心字符串在内部是如何被表示的,也不关心它用几个字节来表示每个字符。只有在将字符串编码成字节(如用于通信信道的传输)或将字节解码成字符串时,才考虑这些问题。
编码可以将抽象字符以二进制数据的形式表示,有很多编码方法,如utf-8。编码是传输过程中非常重要的一部分,没有编码,字节对象只是一簇二进制位。是编码让位有意义。对位进行不同编码可获得不同结果。
str = '你好'
str.encode('UTF-8') -->表示源数据是什么格式的,为UTF-8,非常重要一定要填写!!!虽然默认为utf-8,请一定要填写!python2默认使用系统的编码acsii
b'\xe4\xbd\xa0\xe5\xa5\xbd'
str = b'\xe4\xbd\xa0\xe5\xa5\xbd'
str.decode('UTF-8') -->表示把二进制数据解释成 什么格式的数据(默认UTF-8),非常重要一定要填写!!!

str.encode(encoding='UTF-8')
str.decode(encoding='UTF-8')
saysay='我爱北京天安门'
print(saysay)
print(saysay.encode(encoding='utf-8'))
print(saysay.encode(encoding='utf-8').decode(encoding='utf-8'))
注意了,由于在网络编程里传输必须是byte类型,那么如果你传输的是英文字母或者数字的话,下面的三种写法都是一样的:
aaa="abc123".encode(encoding='UTF-8')
aaa="大家好".encode(encoding='UTF-8')
bytes数据类型和字符串的编码解码,三元运算,进制互换的更多相关文章
- JavaScript escape() unescape() decodeURI()函数对字符串进行编码解码
定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数 描述 string 必需.要被转义或编码的字符串. 返回值 已 ...
- JS对URL字符串进行编码/解码分析
一.为什么要进行js编码和解码? 只有字母和数字[0-9a-zA-Z].一些特殊符号“$-_.+!*'(),”[不包括双引号].以及某些保留字,才可以不经过编码直接用于URL. 出现的情况: 网址路径 ...
- JS中字符串的编码 解码
DEPTNAME 是一个字符串 编码: DEPTNAME = encodeURI(encodeURI(DEPTNAME)); 解码: DEPTNAME = decodeURI(DEPTNAME,&qu ...
- 【python】 [基础] 数据类型,字符串和编码
python笔记,写在前面:python区分大小写1.科学计数法,把10用e代替,1.23x10·9就是 1.23e9 或者 0.00012就是1 ...
- python基础-三元运算和bytes数据
三元运算 进制 二进制,01 八进制,01234567 十进制,0123456789 十六进制,0123456789ABCDEF bytes类型 http://www.cnblogs. ...
- bytes类型和python中编码的转换方法
一.bytes类型 bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型.例如: >>> a = "中国" >>> ...
- python3的bytes数据类型
python已升级到了3.0,都说现在是属于python3,未来也是属于python3,那python3到底改了些什么呢? 其中我记得非常清楚的是,python3对文本和二进制数据作了更为清晰的区分. ...
- python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。
1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...
- python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
随机推荐
- SpringInAction--Bean的作用域
Spring定义了多种作用域,我们在使用的时候可以根据使用的需求来选择对应的作用域,这些作用域,包括(第二个括号中为更安全的注解方法,具体更多参数可查看接口代码) 单例(Singleton)(Conf ...
- New Concept English Two 33 94
$课文92 自找麻烦 1016. It must have been about two in the morning when I returned home. 我回到家时,肯定已是凌晨两点左右了 ...
- Linux:expand命令详解
expand 用于将文件的制表符[TAB]转换为空格,将结果显示到标准输出设备 语法 expand(选项)(file) 选项 -t<数字>:指定制表符所代表的空白字符的个数,而不使用默认的 ...
- Linux:col命令详解
col 经常用于将说明文件转存为纯文本以方便阅读 语法 col(选项) 选项 -b:过滤掉所有的控制字符,包括RLF和HRLF: -f:滤掉RLF字符,但允许将HRLF字符呈现出来: -x:以多个空格 ...
- C#项目中怎样创建和使用类和类库
创建一个类库项目在“文件”菜单上,选择“新建项目”. 在“新建项目”对话框的“模板”窗格中,单击“类库”. 在“名称”框中键入 Persons,再单击“确定”. 把“添加新解决方案”勾选掉,选择“添入 ...
- Java基础拾遗(二)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358523冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...
- Android6.0之后的权限机制对App开发的影响
随着Android系统的更新换代,每次重大更新的方面也逐步扩展,从4.*主要是增强功能,到5.*主要是美化界面,到6.*主要提高系统安全性,再到7.*和8.*主要支撑各种大屏设备,因此开发者需要对每个 ...
- 一段处理json的C#代码
服务器端: using Newtonsoft.Json; using Newtonsoft.Json.Linq; public ActionResult GetGatherData() { IList ...
- C# 超级狗 二次开发 读写数据 激活验证 存储数据库连接字符串
本文主要讲解如果使用C#语言来对超级狗进行二次开发,如果仅仅是做个激活的功能,可以参照另一篇博客,地址:http://www.cnblogs.com/dathlin/p/8487842.html 如果 ...
- [pandas] SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
转载自https://blog.csdn.net/blackyuanc/article/details/77892784 问题场景: 在读取CSV文件后,在新增一个特征列并根据已有特征修改 ...