美文网首页
编码-python学习22

编码-python学习22

作者: 郭俊未来学院 | 来源:发表于2019-12-11 21:50 被阅读0次

    编码

    编码的本质:就是让只认识0和1的计算机,能够理解我们人类使用的语言符号,并且将数据转换为二进制进行存储和传输。

    这种从人类语言到计算机语言转换的形式,就叫做编码表,它让人类语言和计算机语言能够一一对应起来。

    二进制:两个二进制位可以表示十进制的0,1,2,3四种状态。

    2位二进制

    *当有3位二进制时,我们可以表示8种状态,及2**3;

    *当有8位二进制时,我们可以表示256种状态,及2**8;

    存储单位:用来存放一位0或1,就是计算机里最小的存储单位,叫做【位】,也叫【比特】(bit)。我们规定8个比特构成一个【字节】(byte),这是计算机里最常用的单位。

    存储单位1

    ~~~~:1 byte = 8 bit,也就是1字节等于8比特。

    常见的存储单位

    我们常用的百兆宽带,下载速度最多能达到十多兆,是因为运营商的带宽是以比特每秒为单位的,比如100M就是100Mbit/s。而我们常看到的下载速度KB却是以字节每秒为单位显示的,1byte = 8bit,所以运营商说的带宽得先除以8,你的百兆宽带下载速度,也就是十几兆了。

    编码:除了0、1这些阿拉伯数字,像a、b、c这样的52个字母(包括大小写),还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,理论上每个人都可以有自己的一套规则(这就叫编码)。

    为什么产生乱码:如果我们想要互相沟通而不造成混乱,就必须使用相同的编码规则。如果使用了不同的编码规则,那就会彼此读不懂,这就是“乱码”的由来。

    编码史:1、美国首先出台了ASCII编码,统一规定了常用符号用哪些二进制数来表示。

    2、欧洲增加一位,使用8位编码;

    3、中国重写了编码表,也就是GB2312,它用2个字节,也就是16个比特位,来表示绝大部分(65535个)常用汉字。后来,为了能显示更多的中文,又出台了GBK标准。

    4、为了沟通的便利,Unicode(万国码)应运而生,这套编码表将世界上所有的符号都纳入其中。每个符号都有一个独一无二的编码,现在Unicode可以容纳100多万个符号,所有语言都可以互通,一个网页上也可以显示多国语言。

    5、长度适应编码:UTF-8(8-bit Unicode Transformation Format)。它是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,而当字符在ASCII码的范围时,就用一个字节表示,所以UTF-8还可以兼容ASCII编码。

    Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。

    八进制和十六进制:

    8进制是用0,1,2,3,4,5,6,7;16进制是用0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f来表示。

    字母K的编码对应:

    K的编码对应

    几种编码方案在当前的使用情况:

    1、计算机是有自己的工作区的,这个工作区被称为“内存”。数据在内存当中处理时,使用的格式是Unicode,统一标准。

    2、在Python3当中,程序处理我们输入的字符串,是默认使用Unicode编码的,所以你什么语言都可以输入。

    3、数据在硬盘上存储,或者是在网络上传输时,用的是UTF-8,因为节省空间。但你不必操心如何转换UTF-8Unicode,当我们点击保存的时候,程序已经“默默地”帮我们做好了编码工作。

    4、一些中文的文件和中文网站,还在使用GBK,和GB2312

    编码和解码:

    encode()和decode()

    编码,即将人类语言转换为计算机语言,就是【编码】encode();反之,就是【解码】decode()。

    所谓的编码,其实本质就是把str(字符串)类型的数据,利用不同的编码表,转换成bytes(字节)类型的数据。

    相关文章

      网友评论

          本文标题:编码-python学习22

          本文链接:https://www.haomeiwen.com/subject/wsvagctx.html