python中定义列表数据类型使用什么符号_python第二章数据类型 字符编码

一、字符编码

二进制定义

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

1、ASCII码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

由于这些字符串长的长,短的短,写在一起让我们难以分清每一个字符的起止位置,所以聪明的人类就想出了一个解决办法,既然一共就这255个字符,那最长的也不过是11111111八位,不如我们就把所有的二进制都转换成8位的,不足的用0来替换。

在这里,每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位

每8个bit组成一个字节,这是计算机中最小的存储单位(毕竟你是没有办法存储半个字符

2、GBK和GB2312

GB2312是中国国家标准简体中文字符集,由中国国家标准总局发布,1981 年 5 月 1 日实施。GB 2312 编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312。

GB 2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。

GB 2312 的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75% 的使用频率。

对于人名、古汉语等方面出现的罕用字,GB 2312 不能处理,这导致了后来 GBK 及 GB 18030 汉字字符集的出现。

2 GBK

GBK即汉字内码扩展规范,英文全称 Chinese Internal Code Specification。

GBK 共收入 21886 个汉字和图形符号,包括:

GB 2312 中的全部汉字、非汉字符号。

BIG5 中的全部汉字。

与 ISO 10646 相应的国家标准 GB 13000 中的其它 CJK 汉字,以上合计 20902 个汉字。

其它汉字、部首、符号,共计 984 个。

GBK 向下与 GB 2312 完全兼容,向上支持 ISO 10646 国际标准,在前者向后者过渡过程中起到的承上启下的作用。

GBK 采用双字节表示,总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 XX7F 一条线。GBK 编码区分三部分:

汉字区 包括

GBK/2:OXBOA1-F7FE, 收录 GB 2312 汉字 6763 个,按原序排列;

GBK/3:OX8140-AOFE,收录 CJK 汉字 6080 个;

GBK/4:OXAA40-FEAO,收录 CJK 汉字和增补的汉字 8160 个。

图形符号区 包括

GBK/1:OXA1A1-A9FE,除 GB 2312 的符号外,还增补了其它符号

GBK/5:OXA840-A9AO,扩除非汉字区。

用户自定义区

GBK 区域中的空白区,用户可以自己定义字符。

3 GB18030

GB 18030,全称:国家标准 GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集,是 GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充》的修订版。

GB 18030与 GB 2312-1980 和 GBK 兼容,共收录汉字70244个。

与 UTF-8 相同,采用多字节编码,每个字可以由 1 个、2 个或 4 个字节组成。

编码空间庞大,最多可定义 161 万个字符。

支持中国国内少数民族的文字,不需要动用造字区。

汉字收录范围包含繁体汉字以及日韩汉字

GB 18030 编码是一二四字节变长编码。

单字节,其值从 0 到 0x7F,与 ASCII 编码兼容。

双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容。

四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x3

3、

Unicode

Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

---新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

4、

UTF-8

出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

5、总结一下现在计算机系统通用的字符编码工作方式:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

文件存取编码转换图

常用编码介绍一览表

编码制定时间作用所占字节数

ASCII

1967年

表示英语及西欧语言

8bit/1bytes

GB2312

1980年

国家简体中文字符集,兼容ASCII

2bytes

Unicode

1991年

国际标准组织统一标准字符集

2bytes

GBK

1995年

GB2312的扩展字符集,支持繁体字,兼容GB2312

2bytes

UTF-8

1992年

不定长编码

1-3bytes

6、

python2中默认是ASCII,python3中为utf-8

二、数据类型

1、python3保留int,没有long, 布尔类型是True 和False

2、进制转换

bin():十进制转换为二进制使用bin方法

oct():十进制转换为八进制

hex():十进制转换为十六进制

3、算术运算(+ - * / // divmod **)

>>> 2+3

5

>>> 2-3

-1

>>> 2*3

6

>>> 3/2

1.5

>>> 3//2

1

>>> divmod(16,3)

(5, 1)

>>> 2**3

8

python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

4、float  浮点型

float是有限小数或无限循环小数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值