python攻克之路day2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python攻克之路day2相关的知识,希望对你有一定的参考价值。

day2内容

  1. 二进制以及编码

 

1.二进制以及编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

技术分享

 

编码和二进制(基础知识)

计算机存储,网络传输,内存计算用的都是 01010101010101010101

ascii码,8位表示一个字符。

 

由于最早开始并没有考虑到计算机将会全球化,美国发明计算机之初对ASCII编码只有到7位已满足美国单一国家使用后面扩展到8位,

是发明者保留了。

 

随着计算机在全球范围的广泛使用、显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,

注:此处说的的是最少2个字节,可能更多

 

Unicode弊端:

    局限性只有2**16位 = 65535

    不能满足存放更多的文字。

 

Unicode于是32位出来了。

 

32位 4个字节 

其弊端:

00000000    00000000     00000000   00001001    -----> 假设代表A

00000000    00000000     00000000   00011001    -----> 假设代表B

00000000    00000000     00000000   00101000    -----> 假设代表C

原来 ABC各一个字节都能存放的,其余多出的空间浪费掉了

 

针对这种情况,又出了一种叫做UTF-8的字符集

对Uniocode进行优化的编码:用最少的位数表示所有的文字

 

下面是上描述的图:  用最少的位数表示所有的文字 在UTF-8 A的编码占的字节 ------->00001001   utf-8(一个汉字,占3个字节)

技术分享

 

UTF-8好处在于能够把所有的字符都包含,对于一些不需要很多位字节的进行压缩。

 

GBK编码,不考虑别的国家的编码集,它跟UTF-8一样,用最少的位数表示所有的文字,缺点:不考虑其他国家的文字,只能解析中文 ,汉字(占2个字节)

 

 

 

 

 

 

 

 

  

以上是关于python攻克之路day2的主要内容,如果未能解决你的问题,请参考以下文章

python攻克之路day4

如何攻克 Android 调试难题?| 技术头条

架构师的责任(架构师的成长之路---第3篇)

攻克python3-进程

攻克python-socket

攻克python3-字典(第四篇)