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. 0062 Spring MVC的文件上传与下载--MultipartFile--ResponseEntity

    文件上传功能在网页中见的太多了,比如上传照片作为头像.上传Excel文档导入数据等 先写个上传文件的html <!DOCTYPE html> <html> <head&g ...

  2. Missing separate debuginfos, use: debuginfo-install

    环境:CentOS6.2 64位 操作:使用gdb调试C++查询MySQL数据库的程序 原因: 解决办法: 1.  修改文件/etc/yum.repos.d/CentOS-Debuginfo.repo ...

  3. 【转】CentOS下expect 安装

      Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管理方面发挥很大的作用. spawn命令激活一个Unix程序 ...

  4. lua工具库penlight--04路径和目录

    使用路径 程序不应该依赖于奇葩的系统,这样你的代码会难以阅读和移植.最糟糕的是硬编码的路径, windows和Unix的路径分隔符正好相反.最好使用path.join,它可以帮助你解决这个问题. pl ...

  5. love2d 0.9发布

    2013年12月13(有点遗憾,一个星期后才知道),love2d终于发布新版本了, 可以直接从我的百度网盘下载. 主要的更新有:(简单翻译自官方论坛说明) LuaJIT: 默认使用LuaJIT,性能大 ...

  6. 绝对详细!Nginx基本配置、性能优化指南

    大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...

  7. Scala中Stream的应用场景及其实现原理

    欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-imple ...

  8. 【BZOJ】1057: [ZJOI2007]棋盘制作(单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1057 同某一题差不多?记不清是哪题了.. 就是每一行进行单调栈维护递增的高度,在进栈和出栈维护一下长 ...

  9. Group By和Order By的总结

    1.Group By 语句中:select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中. 例如: select [col1], avg([col2])    ...

  10. 模拟window桌面实现

    正在开发中的游戏有个全屏功能--可以在window桌面背景上运行,就像一些视频播放器在桌面背景上播放一样的,花了个上午整了个Demo放出来留个纪念. 实现功能:显示图标,双击图标执行相应的程序,右击图 ...