1.二进制 八进制 十六进制

二进制: bin() 0b10010
八进制: oct() 0o10
十进制: 1-100
十六进制: hex() 0X53 BH

十进制转2, 8,16进制:

>>> bin(144)
'0b10010000'
>>>
>>> oct(8)
'0o10'
>>>
>>> hex(15)
'0xf'
>>>
>>> chr(97)
'a'

A=65 a=97 0=48 //ASCII

-------------------------------------------------------------------
2.python颜色:

我们可以通过对有用的信息设置不同颜色来达到醒目的效果,linux终端中的颜色是用转义序列控制的,转义序列是以ESC开头,可以用\033完成相同的工作(ESC的ASCII码用十进制表示就是27,等于用八进制表示的33)

格式:\033[显示方式;前景色;背景色m

说明:
前景色 背景色 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

显示方式 意义
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见

例子:
\033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
\033[0m <!--采用终端默认设置,即取消颜色设置-->

-------------------------------------------------------------------
3.字符编码:

3.1.英文 符号 数字 与 二进制(数字) 的 关系 ascii
3.2.中文 与 二进制(数字) 的 关系 gbk unicode utf-8
3.3.图片,视频 与 二进制(数字) 的 关系 bytes
---------------------
3.1英文 符号 数字 与 二进制 的关系 ASCII码 8位二进制 2**8=256 0-255
0 --- 48
1 --- 49
A --- 65
B --- 66
a --- 97
b --- 98
例如:
#Alex
51 65 108 101 120
所以:
#Alex 110011 1000001 1101100 1100101 1111000 //一定要断句 8位段 每8位一个字节
#Alex 00110011 01000001 01101100 01100101 01111000 //1个二进制位1个bit(比特)

//单位:
8bit=1bytes=1B
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
1ZB=1024EB
1YB=1024ZB
1BB=1024YB

---------------------
3.2 中文和数字的关系
GB2312 (1981) 6763个 简体
GBK (1995) 21003个 简体 繁体 两个字节
GB18030 (2000) 27484个 简体 繁体 日文 朝鲜语
BIG5 (1984) 13053个 中文 台湾
Shift-JIS 日本字符
ks_c_5601(1987) 韩国字符
TIS-620 泰国编码

Unicode (1991) (2-4个字节) 造成有些空间浪费 ISO组织的支持全世界所有语言(两个字节 2**16=65536)
UTF-8 对Unicode优化,可变长;英文(ascii码1个字节) 欧洲(2个字节) 东亚(汉语 日语 3个字节)

中国规定:进入中国的软件必须支持GBK
Windows系统默认编码是GBK(两个字节)
Mac 和 linux 是 UTF-8
---------------------
3.2.1
python2 默认编码ASCII码 不支持中文 但你可以声明它 用UTF-8编码
# -*- coding: utf-8 -*- 放在第一行;
# encoding:utf-8
python3 默认编码UTF-8 支持中文
---------------------
3.2.2
Unicode 2-4个字节
1.支持了全球各个国家得语言
2.包含了与所有国家编码得映射关系

Unicode解决了字符和二进制之间得对应关系
UTF-8:可变长得 1 2 3 4 个字节来表示 英文1个字节 中文3个字节 欧洲2个字节
UTF-16: 2,4个字节
UTF-32:4个字节
总结:UTF-8是为unicode编码 设计 得一种 在存储 和传输时节省空间得编码方案

无论以什么编码在内存里显示字符,存在硬盘上 都是二进制
注意:存在硬盘上以何种编码存的,再从硬盘上读出来时,就必须以何种编码读,要不然就乱了。

你写得gbk得“路飞学城”Unicode能自动知道它在Unicode中得“路飞学诚”得编码是什么
由于所有系统 编程语言 都默认支持unicode 那你得gbk软件放到美国电脑上 加载到内存里,变成unicode,中文就可以正常显示了

//总结:
1.所有得系统 Win linux mac 都支持Unicode
2.目前Windows终端以gbk显示 mac linux以utf-8 编码
python3 如果以utf-8编码 到内存里 会自动转成 Unicode
python2 如果以utf-8编码 到内存里 不会转成Unicode 还是utf-8 此时到了windows 上就乱码了
//只有两种情况,windows显示才不会乱:
1.字符串以GBK显示
2.字符串是Unicode编码
---------------------
3.2.3
将python2人肉转成unicode decode(解码) encode(编码)
UTF-8 --> decode 解码 -->Unicode
Unicode --> encode 编码 -->GBK/UTF-8
# -*- coding:utf-8 -*0 //py2
s="路飞学城"
print(s) //会乱码 win
s1=s.decode("utf-8") //将utf-8decode解码解成unicode
print(s1) //不会乱了 win
print(type(s1))
s2=s1.encode("gbk") //将unicode编码转成gbk
print(s2)
s3=s1.encode("utf-8") //将unicode编码转成utf-8
print(s3)
--------------------------
在内存中得unicode,存到硬盘上或网络传输要转成gbk/utf-8 ,utf-8 在存储 和传输时是节省空间得编码方案

总结:
Unicode --> encode 编码 --> GBK中文,Shift-JIS日本编码
GBK -------> decode 解码 --> Unicode
Shift-JIS --> decode 解码 --> Unicode

总结:
1.py3 文件默认编码是 utf-8
字符串编码是 unicode,如果文件头声明了gbk,字符串编码会转成Unicode

2.py2 文件编码是 ascii
字符串编码 默认是ascii,如果文件头声明了gbk,那字符串得编码就是gbk

unicode 单独类型

utf-8 占3个字节 中文
gbk 占2个字节 中文
Unicode 占2个字节 中文
--------------------------
3.2.4
ascii 和 gbk 得关系:
连续两个字节都是高字节得128-255得 就认为是中文 1个字节256 0-127得是英文
128以上得叫高字节 两个连在一起得 就是中文
128以下得叫低字节
Unicode和gbk得对应关系表, 高字节上Unicode就忽略了

---------------------
3.3
图片 视频 与二进制得关系:

bytes通过编码表找到得字形就是字符串;
对于图片和视频没有字符编码 怎么办
图片到内存中 怎么表示图片 图片得二进制流 bytes

在print(一张图片时) 就会乱码 因为解释器找不到对应得字形
就是 python 解释器就会拿着编码表查看 你以什么编码写得程序 找到对应得字形显示出来
--------------------------------------
//总结:
py2:
如何在py2上实现写一个软件 在全球电脑上 都能看?
以unicode编码写你的软件
s=you_str.decode('utf-8')
1.s.decode('utf-8')
2.s=u'路飞'
py2中除了str bytes 还有一种类型 unicode
声明得文件头
py2:以utf-8 or gbk ...编码得代码 代码内容加载到内存 并不会 转成 unicode 编码依然时 utf-8 or gbk
py3:以utf-8 or gbk ...编码得代码 代码内容加载到内存 会被自动转成unicode
py2 类型有 str bytes unicode
py3 类型有 str == unicode

py3:
str 无论你以什么格式编码,在python3里str都是Unicode str=unicode
py3 默认支持了全球

解释一下: 为什么在py2里有 str unicode bytes py3里str就变成了unicode

为什么py2里默认不支持中文得,因为创始人,没有意识到,就用了ascii 后来 多个国家使用 需要支持中文 日文 法语 正好出现了Unicode 但是已经有很多软件 基于ascii 有兼容问题;所以单独引入一个类型 unicode 就可兼容 全球用得越来越多
后期:
1.2008年 python 发展20年 龟叔已经功成名就了 想做得点实事了 python 语言已经不像初衷想得那样,python 应该是一个 简洁 明了 优雅得语言 所以龟叔认为不能像之前那样 修修补补 所以就来了一个大变革 python3横空出世了;
py3 直接 不兼容 py2 py3做了很多得改进 其中之一就是 把字符串变成了unicode,文件默认编码变成了utf-8,相当于存到硬盘上是utf-8,读到内存里是unicode,不想用utf-8存文件,用gbk存 ,到内存里任然是Unicode,所以说,只要用python3开发,无论你的程序那种编码开发得,都可以在全球得电脑上正常显示(全球得电脑都支持Unicode)
2.py3除了把字符串得编码改成了Unicode,还把str和bytes做了明确得区分,str就是Unicode格式得字符,bytes就是单纯得二进制了。

python3里只有Unicode才会打印中文 ,s.encode("gbk")不会打印中文,不会去编码表里找,通过这种方式 就是想告诉别人 py3里看字形,必须是Unicode,其他得编码一律按bytes格式展示了
>>> s='路飞'
>>> type(s)
<class 'str'>
>>> s.encode("gbk")
b'\xc2\xb7\xb7\xc9'
>>> b=s.encode("gbk")
>>> b
b'\xc2\xb7\xb7\xc9'
>>> print(b)
b'\xc2\xb7\xb7\xc9'

py3转换成bytes 干嘛呀 在内存里是Unicode 接下来要存到硬盘上 不能用Unicode存,只能以某种编码存 utf-8 gbk存 或者传到远程,不能以Unicode传,变成二进制,传过去,之后 解码在把它变成Unicode 所以说 编码之后 就为了存储和传输;

最后最后:出了编码问题就是: 无非就是能不能正常展示
1.python解释器得默认编码 是不是 出问题了
2.源文件得文件头 py2得默认编码是ascii ,py3是unicode,
3.文件头得声明和文件内容得编码;创建python文件得时候是以utf-8创建得,文件头却声明了gbk,python解释器会以gbk得形式读你得文件 肯定会出问题得,所以一定要记住 写的时候 是什么编码 文件头声明就是什么编码;
4.转编码得时候,以gbk存得这段代码,不要轻易去修改存文件时得编码,因为转编码是不可逆得
5.terminal 终端 windows是gbk mac是utf-8 操作系统 终端是继承自操作系统得编码,操作系统是什么,它就是什么
6.用不对得编码去解码另外一种编码得数据; 编码没对上

参考:http://www.cnblogs.com/alex3714/articles/7550940.html

--------------------------------------------------------------
总结:
1.2 8 16进制
2.python颜色
3.字符编码

python - 2 8 16进制/颜色/字符编码的更多相关文章

  1. iOS 16进制颜色和UIcolor的转换

    各种颜色之间的转换,会陆续更新, 实现了 16进制颜色(HEX).RGBA.HSBA.UIColor之间的  相互转换 使用示例(加号方法,类名调用) //UIColor 转 RGB.HSB RGBA ...

  2. C# RGB与16进制颜色转换方法

    http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB]        /// &l ...

  3. swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)

    /** * 设置16进制颜色: * 可识别类型 * 1:有# * 2:没有# * 3:含有0X */ extension UIColor{ class func hexadecimalColor(he ...

  4. C#中一个简单的匹配16进制颜色的正则测试

    using System; using System.Text.RegularExpressions; namespace Test { class Program { //匹配16进制颜色代码的正则 ...

  5. iOS开发中16进制颜色(html颜色值)字符串转为UIColor

    //16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSString ...

  6. 16进制颜色字符串转为UIColor

    //16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert {      NSS ...

  7. iOS 直接使用16进制颜色

    在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...

  8. python 字符串转16进制函数

    需要用python处理16进制的文本,比如像下面这个文本 40 80 C0 40 80 C0 40 80 C0 40 80 C0 40 BF CC 40 80 C0 40 80 C0 40 80 C0 ...

  9. 颜色选择器 rgb 与16进制 颜色转换

    1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

随机推荐

  1. [转]C++中的三种继承public,protected,private

    链接:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html

  2. poj2774(后缀数组水题)

    http://poj.org/problem?id=2774 题意:给你两串字符,要你找出在这两串字符中都出现过的最长子串......... 思路:先用个分隔符将两个字符串连接起来,再用后缀数组求出h ...

  3. 示例 - 如何在ASP.NET中应用Spider Studio生成的DLL?

    >> 接前文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其运用到ASP.NET中: 1. 创建WebApplicati ...

  4. Android之SystemUI载入流程和NavigationBar的分析

    Android之SystemUI载入流程和NavigationBar的分析 本篇仅仅分析SystemUI的载入过程和SystemUI的当中的一个模块StatusBar的小模块NavigationBar ...

  5. SQL里3个表的连接查询

    两种:1.select * from 表1,表2,表3 where 表1.字段=表2.字段 and 表1.字段=表3.字段这种效率比较低 结构简单数据量小可以采用2.select * from 表1 ...

  6. git 停止在12% writing objects 怎么回事?

    git 停止在12% writing objects 怎么回事? 输入以下代码试一下: git config --global http.postBuffer 524288000  

  7. web页面防盗链功能使用--request.getHeader("Referer")

    使用Request对象设置页面的防盗链 所谓的防盗链就是当你以一个非正常渠道去访问某一个Web资源的时候,服务器会将你的请求忽略并且将你的当前请求变为按正常渠道访问时的请求并返回到相应的页面,用户只有 ...

  8. thinkphp相关功能整合系列

    thinkphp整合系列之短信验证码.订单通知 thinkphp整合系列之rbac的升级版auth权限管理系统demo thinkphp整合系列之阿里云oss thinkphp整合系列之phpmail ...

  9. thinkphp中ajaxReturn的用法

    1.例子: if ($codeid = $model->addCustomer($this->admin["id"])) { $data["code" ...

  10. linux 命令集合收集(ubuntu)

    1.查看ubuntu版本号:cat /etc/issue  或者sudo lsb_release -a 2.查看内核版本信息:uname -a ,显示为4.4.0 x86_64版本内核