bytes数据类型

Python3最重要的新特性大概要算是对文本和二进制数据做了更为清晰的区别。文本老是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得二者的区分特别清晰。你不能拼接字符串和字节包,也没法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。html

 

字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。编程

bytes数据类型在全部的操做和使用甚至内置方法上和字符串数据类型基本同样,也是不可变的序列对象。网络

bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(好比究竟是什么字符)则由相应的编码格式解码所决定。Python3中,bytes一般用于网络数据传输、二进制图片和文件的保存等等。能够经过调用bytes()生成bytes实例,其值形式为 b'xxxxx',其中 'xxxxx' 为一至多个转义的十六进制字符串(单个 x 的形式为:\x12,其中\x为小写的十六进制转义字符,12为二位十六进制数)组成的序列,每一个十六进制数表明一个字节(八位二进制数,取值范围0-255),对于同一个字符串若是采用不一样的编码方式生成bytes对象,就会造成不一样的值.函数

 

 

无论怎样,字符串和字节包之间的界线是必然的的,下面的图解很是重要,务必要牢记于心:编码

 

b = b'' # 建立一个空的bytes
b = byte() # 建立一个空的bytes
b = b'hello' # 直接指定这个hello是bytes类型
b = bytes('string',encoding='编码类型') #利用内置bytes方法,将字符串转换为指定编码的bytes
b = str.encode('编码类型') # 利用字符串的encode方法编码成bytes,默认为utf-8类型

bytes.decode('编码类型'):将bytes对象解码成字符串,默认使用utf-8进行解码。code

 

对于bytes,咱们只要知道在Python3中某些场合下强制使用,以及它和字符串类型之间的互相转换,其它的基本照抄字符串。htm

简单的省事模式:对象

string = b'xxxxxx'.decode() 直接以默认的utf-8编码解码bytes成string图片

b = string.encode() 直接以默认的utf-8编码string为bytes内存

 

计算机内存地址和为何用16进制?

为何用16进制

一、计算机硬件是0101二进制的,16进制恰好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,由于换算的时候一位16进制数能够顶4位2进制数,也就是一个字节(8位进制能够用两个16进制表示)

二、最先规定ASCII字符集采用的就是8bit(后期扩展了,可是基础单位仍是8bit),8bit用2个16进制直接就能表达出来,无论阅读仍是存储都比其余进制要方便
三、计算机中CPU运算也是遵守ASCII字符集,以1六、3二、64的这样的方式在发展,所以数据交换的时候16进制也显得更好
四、为了统一规范,CPU、内存、硬盘咱们看到都是采用的16进制计算


16进制用在哪里
一、网络编程,数据交换的时候须要对字节进行解析都是一个byte一个byte的处理,1个byte能够用0xFF两个16进制来表达。经过网络抓包,能够看到数据是经过16进制传输的。
二、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式

三、一些经常使用值的定义,好比:咱们常常用到的html中color表达,就是用的16进制方式,4个16进制位能够表达好几百万的颜色信息。

相关文章
相关标签/搜索