python 字符的花儿

字符(串)str

  • python3 运行中(内存中)使用unicode编码(以支持多国语言),即:十六进制编码unicode与字符串str等价
>>> 'u4e2du6587'
'中文'
  • ord()函数可以获取字符的整数表示
  • chr()函数把编码转换成字符
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

字节类型bytes

  • str为unicode,存盘或网上传输需要把str变为字节为单位的bytes,如下表示:
>>>x ='ABC'
>>>y = b'ABC'
#前者是str,后者虽然内容显示得和前者一样,但bytes的每个(任何)字符都只占用一个字节。
#x中可以有中文,y中不能有中文。中文字符串编码有歧义,编码成byte(虽不能显示),但规范,无歧义(更标准)
>>>"你好".encode("utf")
b'xe4xbdxa0xe5xa5xbd'
#这是字符串编码变为byte类型的最常用编码方式。
  • 廖老师编码篇

https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896

  • 字符串函数大权

https://www.cnblogs.com/zhangjunkang/p/9381838.html

花儿base64

Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。迅雷、flashget下载链接是基于base64加花的。
优点:速度快,ascii字符,肉眼不可理解
缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

#安装base64
>>> import base64
>>> s="00000000"
>>> print(s.encode("utf"))
b'00000000'
>>> base64.b64encode(s.encode("utf"))
b'MDAwMDAwMDA='
# 加密之前要输入byte类型。而python3中的字符串是unicode类型,所以需要转码(python2中str是byte,无须转码)
# 输出也是byte类型。立刻解密是方便的。但,还我的字符串:
>>> print(str(b'MDAwMDAwMDA=',"utf"))
'00000000'
# 字符串来了
原文地址:https://www.cnblogs.com/scientist/p/12143620.html