编码

it2022-05-05  41

一、

 

数字、字符串  有小数据池  

小数据池:如果创建范围之类的数字或字符串,它会共用一个地址,节省内存

数字的范围 -5~256

字符串:1、不能含有特殊字符

    2, s*20还是同一个字符 s是一个字符, 超过21以后就是两个地址

剩下的list,dict,tuple,set都没有小数据池

 

二、

ascii:

  一个字符占8位,一个字节      没有中文

unicode:

  32位:一个字符占32位,四个字节(英文和中文都是四个字节)

utf-8:

  英文:一个字符占8位,一个字节

  中文:一个字符占24位,三个字节

gbk:

  英文:一个字符占8位,一个字节

  中文:一个字符占16位,两个字节

 

python3中:

  字符串str 在内存中是用unicode编码

    bytes类型

    对于英文:

      str:表现形式: s = ‘alex'

        编码方式: unicode

      bytes:表现形式: s = b'alex'

         编码方式:utf-8,utf-16,gbk,gb2312,ascii等

    对于中文:

      str:表现形式:s = '中国'

        编码方式:unicode       

      bytes:表现形式: s = b'x\e91\e91\e01\e21\e31\e32'

         编码方式:utf-8,gbki等

 

三、encode编码,如何将str --->  bytes

s1 = 'hjm' s2 = s1.encode('utf-8') #b'hjm' s2 = s1.encode('gbk') #b'hjm' print(s2) s3 = '中国' s4 = s3.encode('utf-8') # b'\xe4\xb8\xad\xe5\x9b\xbd' s4 = s3.encode('gbk') # b'\xd6\xd0\xb9\xfa' print(s4)

四、decode解码,如何将bytes ---> str

# str --> bytes (encode) s = '二哥' b = s.encode('utf-8') print(b) #bytes --> str (decode) s1 = b.decode('utf-8') print(s1)

如果字符串里面全部是字母,解码的时候可以使用decode('gbk'),因为此时都是根据ascii

转载于:https://www.cnblogs.com/huangjm263/p/8081552.html


最新回复(0)