三元运算

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

进制

bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是python2是不区分这个数据类型的。

比如说音频,视频文件都是二进制类型,也就是bytes类型。(python3通过socket在网络上传输数据时必须要用二进制格式,python2没有强制必须是二进制,字符串也可以)

Python3中最大的新特性就是对文本和二进制数据做了更清晰的区分。文本通常是Unicode字符集,并且用str字符串类型表示,而二进制数据用bytes字节类型表示。在Python3中,字符串str和字节bytes是不可以混合使用的,这也使得二者之间更以区分。你不能将字符串和字节连接起来,不能在字符串中得到字节,也不能在字节中得到字符串,也不能通过函数传参字符串以期望得到字节,反之亦然。

py3里,只有 unicode编码格式 的字节串才能叫作str
其他编码格式的统统都叫bytes,如:gbkutf-8gb2312…………

这些bytes要转换为 unicode编码 才能当作str来用,就需要知道 bytes 的编码格式。
如果你事先知道,比如gbk,就可以用 bytes.decode('gbk')将bytes解码为unicode字符。
如果很不幸,你有一堆bytes,不知道它们的编码(例如 网站服务器返回的响应体),
这时候,你就需要chardet 来测试它们的编码。

字符串和字节间是由区别的,下面的关系应该牢记在心:

字符串可被编码为字节,字节可被解码为字符串

可以这样考虑,字符串是文本的一种抽象表示。一个字符串有很多字符组成,字符是与任何特定二进制表示无关的抽象实体。处理字符串时,可以对其进行分割、切片、连接、搜索操作。我们不关心字符串在内部是如何被表示的,也不关心它用几个字节来表示每个字符。只有在将字符串编码成字节(如用于通信信道的传输)或将字节解码成字符串时,才考虑这些问题。

编码可以将抽象字符以二进制数据的形式表示,有很多编码方法,如utf-8。编码是传输过程中非常重要的一部分,没有编码,字节对象只是一簇二进制位。是编码让位有意义。对位进行不同编码可获得不同结果。

string 通过encode 编码成 bytes 类型,而bytes格式的数据又可以通过decode来解码成str类型。
 
encode 用来对string格式个数据进行编码:
str = '你好'
str.encode('UTF-8') -->表示源数据是什么格式的,为UTF-8,非常重要一定要填写!!!虽然默认为utf-8,请一定要填写!python2默认使用系统的编码acsii
b'\xe4\xbd\xa0\xe5\xa5\xbd'
decode 用来对bytes格式的数据进行解码:
str = b'\xe4\xbd\xa0\xe5\xa5\xbd'
str.decode('UTF-8') -->表示把二进制数据解释成 什么格式的数据(默认UTF-8),非常重要一定要填写!!!

str.encode("UTF-8")
str.encode(encoding='UTF-8') 
str.decode("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("UTF-8")
aaa="abc123".encode(encoding='UTF-8') 
aaa=b"abc123"
但是如果你的字符串是中文的话,那么必须写成:
aaa="大家好".encode("UTF-8")
aaa="大家好".encode(encoding='UTF-8') 
而aaa=b"大家好"是非法的
 
也就是ASCII码是可以前面直接加b来表示byte类型的,但是非ASCII码的就不可以这样了。
 
 
 

bytes数据类型和字符串的编码解码,三元运算,进制互换的更多相关文章

  1. JavaScript escape() unescape() decodeURI()函数对字符串进行编码解码

    定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数 描述 string 必需.要被转义或编码的字符串. 返回值 已 ...

  2. JS对URL字符串进行编码/解码分析

    一.为什么要进行js编码和解码? 只有字母和数字[0-9a-zA-Z].一些特殊符号“$-_.+!*'(),”[不包括双引号].以及某些保留字,才可以不经过编码直接用于URL. 出现的情况: 网址路径 ...

  3. JS中字符串的编码 解码

    DEPTNAME 是一个字符串 编码: DEPTNAME = encodeURI(encodeURI(DEPTNAME)); 解码: DEPTNAME = decodeURI(DEPTNAME,&qu ...

  4. 【python】 [基础] 数据类型,字符串和编码

    python笔记,写在前面:python区分大小写1.科学计数法,把10用e代替,1.23x10·9就是 1.23e9                            或者 0.00012就是1 ...

  5. python基础-三元运算和bytes数据

    三元运算       进制 二进制,01 八进制,01234567 十进制,0123456789 十六进制,0123456789ABCDEF   bytes类型 http://www.cnblogs. ...

  6. bytes类型和python中编码的转换方法

    一.bytes类型 bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型.例如: >>> a = "中国" >>> ...

  7. python3的bytes数据类型

    python已升级到了3.0,都说现在是属于python3,未来也是属于python3,那python3到底改了些什么呢? 其中我记得非常清楚的是,python3对文本和二进制数据作了更为清晰的区分. ...

  8. python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。

    1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...

  9. python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

    进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 ...

随机推荐

  1. 微信小程序之答题领券系统构建

    这个项目做了有一段时间了,客户需求反复更改,所以版本也是在不断迭代,下面简要说明一下这个系统的构建过程吧 系统功能: 1.基于商城系统开发的商品答题领券功能 2.首页商品列表页显示当前商品的答题状态 ...

  2. EasyPusher安卓直播推流到EasyDarwin开源流媒体服务器工程简析

    EasyPusher主要有三部分组件组成:采集,编码,叠加,上传.在这个基础上同时支持本地存储\后台预览的功能.主要业务模块与相关类之间的关系如图所示: Created with Raphaël 2. ...

  3. D3.js 使用心得

    教程 D3.js 入门教程系列 http://www.ourd3js.com/wordpress/296/ 全球地图数据

  4. 【剑指offer】整数中1出现的次数,C++实现

    原创博文,转载请注明出处!本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 # 题目 # 思路 分析1在数字中出现的规律.设数字N = abcde ,其中abcde分别为十进制中各位 ...

  5. bytes 与 str的区别以及装换

    bytes 和 str 的区别: bytes 存储字节( 通常值在 range(0, 256)) str 存储unicode字符( 通常值在0~65535) bytes 与 str 的转换 编码(en ...

  6. 每天一个linux命令(性能、优化):【转载】top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  7. BZOJ1098 POI2007 办公楼biu 【链表+bfs】

    Description FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄,FGD决 ...

  8. BZOJ3444 最后的晚餐【细节题+组合数学】*

    BZOJ3444 最后的晚餐 Description [问题背景] 高三的学长们就要离开学校,各奔东西了.某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结.因为有m名学生偷偷找他,要求和自己暗恋的 ...

  9. Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

    Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够分析我们的项目文件. 作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 R ...

  10. Oracle中Inner join和Where的区别

    1 .Where子句中使用的连接语句,在数据库语言中,被称为隐性连接.Inner join--on子句产生的连接称为显性连接.(其他Join参数也是显性连接)Where 和Inner join产生的连 ...