美文网首页
Python中的字符和数字

Python中的字符和数字

作者: 天涯西剑 | 来源:发表于2019-08-27 16:51 被阅读0次

字符和数字

且记住计算机中的所有一切都是数!,变化的不过是表现形式而已。
不同的语言默认的表现形式不一样,比如C语言中,char(97)等于 'a',而Python中str(97)却等于'97'。
可以这么说C语言表现了'a'的本质->数字97,而Python为了服务人类,已经改变了原来的数值变成了数组,'97'的本质是[57,55]这个数组。

复杂的字符与数组

简单的字符比如‘a’可以用单个数来表示,这些原始的简单字符被编码为数字,史称ASCII编码ASCII编码规定了128个数字表现为字符的规则。
复杂的字符或者字符串则需要数组来承载,比如汉字、日语等语言,但是由于不同国家的程序员不同,所以制定了不同的数字到字符的表现形式的规则,这就是编码规则,最熟悉的就是中国的 ‘gbk ’了,当然ASCII编码也是其中一种规则。
其中gbk编码中,每个字所需要的数组空间也不一样,有的可能需要一个位置,有的可能需要两三个位置。
过多的编码导致的不和谐需要统一,所以Unicode出来了,Unicode规定了每个字的编号。但是Unicode没有规定具体的存储格式,所以Unicode只是一个标准,还没有到编码的程度。Unicode具体编码格式可以有UTF-8,UTF-16,UTF-32等

UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度。编码规则如下:

  • 对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码点。因此,对于英文中的 0 - 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码那个年代的文档用 UTF-8 编码打开完全没有问题。
  • 对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码点来填充。
Unicode 十六进制码点 UTF-8 二进制
0000 0000 - 0000 007F 0xxxxxxx
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Python中的表现形式

以上就是关于字符和数字的通用知识,那么在Python中是如何转换的呢?

  1. 字符到数字
    1.1 到对应的编码数字:ord('a')会输出97ord('三')会输出19977
    1.2 到对应的显示数字:int('1')会输出1

  2. 数字到字符
    2.1 编码数字到对应的字符:chr(97)会输出'a'chr(19977)会输出'三'
    2.2 到对应的显示数字:str(1)会输出'1'

  3. 字符串到数组
    3.1 字符串到对应的编码数字
    字符串的话就需要考虑到编码规则了,'三三'.encode('utf-8')输出b'\xe4\xb8\x89\xe4\xb8\x89',然而这个仍然是字符串。使用int.from_bytes(b'\xe4',byteorder='big')则输出228
    3.2 到对应的显示数字:int('1234')会输出1234

  4. 数组到字符串
    4.1 编码数组到对应的字符
    数组需要先处理为字符串,假定已经得到'e4b889e4b889',那么需要先转为bytesbytes.fromhex('e4b889e4b889'),那么我们得到了bytes数组(字符串的存储格式):b'\xe4\xb8\x89\xe4\xb8\x89',我们要看字符串的话,进一步执行b'\xe4\xb8\x89\xe4\xb8\x89'.decode('utf-8'),那么我们可以得到'三三'
    4.2 到对应的显示数字:str(11)会输出'11'

注意:

  1. 二进制、八进制、十进制、十六进制的实际存储都是一样的,即0b10000二进制、0o20八进制、16十进制、0x10十六进制其实都是十进制的16。
  2. 待续

相关文章

  • Python系列-List和while

    上一节:《Python系列-数字和字符串》 List 上一篇文章中,介绍了Python中的数字和字符串,这一节中,...

  • python数据类型转换函数

    参考 python中的字符数字之间的转换函数

  • PythonQuickView by L0st

    PythonQuickView 处理字符串 列表 数字相关 元组 Python中的逻辑运算 Python中的If结...

  • 字符串

    1.字符的编码 Python中的字符采用的是Unicode编码 1.什么是编码 :数字和字符是一一对应的,其中字符...

  • day4-字符串

    1.字符编码 python中的字符采用的是Unicode编码 什么是编码将字符与数字一一对应,其中字符对应的数字就...

  • Day02 - 2018-04-03

    python中数字和字符串不能直接运算 如 0 + '5' #unsupported operand type(s...

  • python对中文,英文.....字节判断

    python中判断字符是否是汉字、字母以及数字 在python处理数据的过程中,有时候需要判断给定的字符是否是汉字...

  • Python篇-字符串方法应用

    一 字符串常用方法 数字python3中,不管数字有多大都属于int类型python2中,有长整形,用long修饰...

  • cannot concatenate 'str' and 'in

    在java中,数字和字符串直接用+拼接在python中会报错,可以对数字 str(i)进行处理后再拼接

  • python知识复习(一)--(磁盘)IO编程

    一·input和raw_inputinput()输入严格按照Python的语法,是字符就加 ' ' ,数字就是数字...

网友评论

      本文标题:Python中的字符和数字

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