1、定义与语法python
图例:编程
**16进制转换**代码验证编程语言
例: 1.八进制 >>> oct(1) '0o1' #'0o1' 0o 是八进制的显示方式,后面的数字是多少位,就表明多少位 >>> oct(8) '0o10' >>> oct(16) #逢 8 进位 '0o20' >>> oct(32) '0o40' #8的多少倍就表明多少位 >>> oct(64) '0o100' #用的不多知道就行 2.十六进制 >>> hex(1) '0x1' >>> hex(15) #十六进制中 f 表明15,由于在16进制中,不能出现10或者10以上的2位数字 '0xf' >>> hex(16) #十六进制是逢16进位 0x是16进制的显示方式 '0x10' >>> hex(32) '0x20' >>> hex(64) #16的多少倍就是多少位 '0x40'
2、十六进制的特征及用途优化
1.十六进制特征:16进制便于阅读,如今的存储设备都使用16进制为单位设置的编码
图例spa
1.数字、二进制、十六进制之间的转换操作系统
例: 1.用数字查找ASCII码表里面对应的字符 >>> chr(100) 'd' >>> chr(120) 'x' >>> chr(123) '{' #返回对应得字符 2.数字转换二进制 >>> bin(97) '0b1100001'
3、十六进制与二进制的转换:七张图了解16进制与二进制的转换翻译
图1: 图2: 图3:设计
图4: 图5: 图6:3d
图7:
第十一节: 字符编码间的转换与python的bytes类型
1、编码的回顾
1.编码的总类型
* ASCII 码,最先期的编码,占 1个字节的内存,只有英文。
** GB2312 占2个字节, 支持6700多个汉字。
*** GBK ,GB2312的升级版,支持21000多个汉字。
**** shift - JIS 日本字符。
***** ks_c_5601-1987 韩国编码。
******TIS—620 泰国编码。
因为每一个国家都只有本身国家的编码,太局限,很差在国际上流通,缺乏统一性。
*******unicode:万国码应运而生,2-4个字节,已收录136690个字符,还在不断的扩张中,主要做用有2个:1.支持普遍,兼容旧编码。2.它包含了跟全球全部国家编码的映射关系,缺点是:英文本来1个字节,在这里面倒是2个字节,浪费空间,翻倍的字节带来内存与流量翻倍,因此为了优化便与存储节省空间。后续出现三个unicode 的升级版分别是:
*UTF - 8 :(使用最普遍的语言) 分别用 1 ,2, 3,4 个字节表示,优先使用1个字节,没法知足再加1个字节,英文占 1 个字节 ,欧洲语系占 2 个字节,东亚占 3 个字节,其余占 4 个字节。
**UTF - 16 使用2-4个字节表示,优先使用2个,不然使用4个
***UTF - 32 所有用4个字节表示全部字符
总结:UTF 类编码是unicode编码设计的在存储和传输时节省空间的编码方案。
二、字符存储硬盘的方法:二进制
(1).字符存储模式:(怎么存储和读取的)
首先:字符必定是用0101等二进制存储的,可是因为存储时使用编码的标准不同(UTF - 八、GBK、ASCII 码表....等等),因此你用什么编码保存的,就要用什么编码去读取,不然会出现乱码现象。
图解:
(2).字符编码的转换:
虽然unicode统一了全部国家的编码,可是 大多数国家仍是在用本身国家的编码,中国就用 GBK 可是中国的编码出口到外国须要怎么的转换呢?unicode编程语言全部的电脑系统都会默认支持,把 中国的 GBK 放到 unicode 里面。映射出的 unicode 编程格式显示就能够了(unicode在这里至关于一个翻译)
图解:
******字符编码映射关系图解:
2、 python3执行代码流程及转换方法
一、在python3里面
因此在python3里面写的代码去Windows上面去执行,不会乱码
二、特殊状况,python2里面默认的编码是ASCII 码表。
**在python2里面,python2并不像python3自动转unicode,而是仅以文件头声明的语言去解释和保存你的编码,若是以 UTF - 8解释和保存,在Windows系统上就会出现乱码,由于Windows系统默认支持的终端语言是GBK ,虽然Windows 默认支持unicode ,可是,python2 并不会自动把保存UTF - 8 格式的代码转成unicode 。
********乱码确定是不行的,既然弄很差自动转,就人肉转了。
**由于太生手,因此搞很差python2 与 Windows 之间的转换直接上图解:
*****总体思路就是先把python代码转换成unicode给Windows阅读,在转回utf - 8 或GBK 存储, **在python2里面,不是unicode就是str 字符串类型。
##记住下图的规则,就能懂了
*#*总结:一、在python3里,默认编码是 utf - 8 ,字符串默认编码是 unicode ,若是文件头声明了其余编码,存起来的字符串依然会自动转unicode 。
二、在python2里,默认编码是ASCII 码 ,字符串默认是 ASCII 码,若是文件头声明了编码,那么,字符串也会是什么,不会自动转unicode。由于unicode在python2里面是一个单独的类型。
3、 python3经过查看编码映射表肯定编码类型
一、上边讲过转换代码的方法,那是在知情的状况下进行的。可是,若是不知情,不知道源代码,也不知文件头声明,怎么判断代码的转换语法是正确的呢?
(1).要有unicode编码关系映射表的exe,经过 把代码转换成二进制(或者16进制)在编码关系映射表里找到对应的编码,把16进制转换成二进制(二进制换算)
(2).GBK在设计时,为了兼容ASCII 码表,(ASCII码表只有127位,因此128位省略掉)因此GBK设计时规定,若是连续两个高字节的话,就认为是中文,高字节就是都超过了128位。unicode 在设计时,知道GBK的规定,因此默认忽略掉了最高一位的表示单位,
4、python的bytes类型介绍
一、定义:bytes ,就是在python里面显示的二进制串
图解:
二、在没有特殊的状况下二进制串其实就是字符串,在有图片中的二进制串就不能叫字符串了,这就是区分bytes类型的缘由。没法找到对应的文字,
可是也是二进制串,的显示。这样的二进制串叫bytes类型就不足为奇了,因此,二进制串所有称为 bytes 类型
5、python3与python2的字符串区别
1.在python2里
*str = bytes 为何有bytes类型?
由于 :要表示图片、视频等二进制格式 的数据,就要用bytes 类型表示,
**以UTF - 8 写的编码字符串,在Windows上没办法显示,如何在python2里写的代码让全球通用都能看呢?
就要以unicode 编写代码软件了有两种方法能够实现,第一种就是在文件头直接声明用unicode,第二种 就是把utf- 8 转换成unicode,转换的语法
s = you_str.decode(UTF - 8)好比你的代码变量名为 s ,就要 s.decode(UTF - 8)
***在python2里 有一个单独的类型 :unicode类型
****语言格式须要转换,由于存到内存的编码,就是文件头声明的编码,不会转换其余格式
例:
在python2里 :以utf - 8 或 gbk . . . 写的代码 ,内容加载到内存里并不会被转成unicode 类型,依然 是utf - 8 或gbk ...
在python3里:以utf - 8 或 gbk . . . 写的代码,内容加载到内存里,会被自动转成unicode 类型。
2. 在python3里
str = unicode(在python3里 ,默认支持 unicode,不是ASCII 码表,因此没有unicode 这个单独的类型)
6、总结
一、python2 与python3的转变
由于 py 2 问题太多,知足不了太多用户的需求,特别是在支持的语言上(ASCII 码表)
因此py 3 横空出世,解决了不少问题,最重要的就是窜出时默认用unicode 格式,写文件默认使用 utf - 8 ,这样不管是在哪里都能正常显示文件
除此以外,还把str 和 bytes 进行了明确的区分,
str 就是unicode 格式的字符
bytes 类型 就是二进制串
二、处理python编码问题的方法
最后,再提示下,python只要出现各类编码问题,无非是一下几种常见编码错误的缘由
python解释器的默认编码是否有问题(py2 ASCII码,py3 unicode)
写的源文件的编码,与文件头声明解释的编码是否一致例:(文件使用utf - 8 写的,在读取文件时文件头却声明 gbk 格式)
在pycharm里面转换的时候(轻易不要转),用utf - 8 写的代码,转换 gbk (convert),转换不成就会乱码,不能回退,若是这样的话就意味着要从新写一份代码
还有就是运行终端,运行终端是继承操做系统的编码(Windows 默认 gbk ,linx默认是utf - 8 ,这些是能够改的,可是尽可能 要用什么格式写的,就以什么格式去读)
**小结:以上方法掌握以后,挨个排查基本上能解决问题
——————————————模块结束线——————————————2018-11-06