python - 2 8 16进制/颜色/字符编码
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进制/颜色/字符编码的更多相关文章
- iOS 16进制颜色和UIcolor的转换
各种颜色之间的转换,会陆续更新, 实现了 16进制颜色(HEX).RGBA.HSBA.UIColor之间的 相互转换 使用示例(加号方法,类名调用) //UIColor 转 RGB.HSB RGBA ...
- C# RGB与16进制颜色转换方法
http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB] /// &l ...
- swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)
/** * 设置16进制颜色: * 可识别类型 * 1:有# * 2:没有# * 3:含有0X */ extension UIColor{ class func hexadecimalColor(he ...
- C#中一个简单的匹配16进制颜色的正则测试
using System; using System.Text.RegularExpressions; namespace Test { class Program { //匹配16进制颜色代码的正则 ...
- iOS开发中16进制颜色(html颜色值)字符串转为UIColor
//16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSString ...
- 16进制颜色字符串转为UIColor
//16进制颜色(html颜色值)字符串转为UIColor +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSS ...
- iOS 直接使用16进制颜色
在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...
- 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 ...
- 颜色选择器 rgb 与16进制 颜色转换
1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
随机推荐
- jsp学习之scriptlet的使用方法
scriptlet的使用 jsp页面中分三种scriptlet: 第一种:<% %> 可以在里面写java的代码.定义java变量以及书写java语句. 第二种:<%! %> ...
- java自带线程池和队列详细讲解<转>
Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...
- PHP——投票
要求: 选择第一个页面的复选框值,点击提交则提交数据,点击查看结果在同一页面覆盖显示结果的投票人数,百分比和进度条,点击返回,返回第一页面 数据库为 投票 表格为diaoyanxx 表格内容为: zh ...
- 小贝_redis 高级应用-事务
redis高级应用-事务 一.redis的事务 二.redis实现事务 三.redis事务问题 一.redis的事务 事务提供了一种"将多个命令打包,然后一次性.按顺序地运行"的机 ...
- C++ new delete操作符
//new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; /* 1.n ...
- 关于Unity的开发模式
Unity是组件化的开发模式,总结起来就是节点与组件.节点就像人,组件就像工具,人拿不同的工具,就变成不同的角色,有不同的作用.人+医学常识=医生. 1.每个空节点创建后,刚开始只有一个Transfo ...
- java为安全起见对Applet有所限制
Applet消亡的原因: ①java为安全起见对Applet有所限制:Applet不允许访问本地文件信息.敏感信息,不能执行本地指令(比如FORMAT),不能访问初原服务器之外的其他服务器. ① IE ...
- TrustZone——开源库—Linaro—OP-TEE
想研究安全系统源代码的有福气了.曾经OVOS的代码缺少TA相关的实现. 这次的版本号,基本框架都有了.先看看架构图吧. 几家大公司做的,可能是ST牵头.页面有ST的LOGO. 代码质量较高. 未来也会 ...
- Linux下面变量的疑问处
SHLVL是Shell累加器的变量,具体请看下面 http://www.cnblogs.com/ziyunfei/p/4803832.html OLDPWD = old pwd(就是是之前一次的pwd ...
- 修改Apache访问权限
You don't have permission to access / on this server.错误,居然说我此台服务器上无权限,ok解决办法如下: 找到:apache文件,进入conf文件 ...