字符串和编码
【乱七八糟】
1.二进制。(令人头疼,现在不疼啦)
十进制12345.67转化成十进制就是.
同理二进制就是这样的:
当把1111111转化为十进制的时候还有一个这样的公式:2……(N+1)-1
2.字符 字符串 字节:
一个字,或者一个字母,就是一个字符。一个字符可能占了几个字节。字节是说内存的
3.计算机只能处理数字。文本转换为数字才能处理。
一个字节(byte)有8个比特(bit)
所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)
4.
str字符串
事情是这样的,美国人发明了计算机之后只把他们所使用的127个字符编到了计算机里。
这个编码表被称为ASCII编码(来再看一下小写asscii)。
后来计算机到了中国,然后中国制定了GB2312编码,同理日文Shift_JIS;韩文Euc-kr
Unicode把所有语言都统一到一套编码里避免乱码。(最常用的是用两个字节表示一个字符。现代操作系统和大多数编程语言都直接支持Unicode。)
ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
A用ASCII编码是十进制的65,二进制的01000001
如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001
那么问题来了,Unicode编码占内存a
于是有了“可变长编码”的UTF-8编码,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
其实就是你得知道这么个事:
【正事】
一.Python的字符串
Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言
1.单个字符:
ord('')字符转编码
chr()编码转字符
2.我不会十六进制转十进制所以2.不重要
3.str→bytes
以Unicode表示的str(字符串)通过''.encode('')方法可以编码为指定的bytes(字节)
注:Python对bytes类型的数据用带b前缀的单引号或双引号表示
在bytes中,无法显示为ASCII字符的字节,用\x##显示。不知道说的什么所以划了
4.bytes→str
b''.decode('')
5.如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:
6.len('')计算str的字符数,计算bytes的字节数
【注】为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。
7.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
屁猪说:
二、格式化
我们经常会输出类似'亲爱的xxx你好!你xx月的话费是xx,余额是xx' so...
1.%
%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
格式化整数%d和浮点数%f还可以指定是否补0和整数与小数的位数:
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。
2.format()没看明白呢,未完待续...太多了看不明白自行百度(不想看,以后再说)
2020.4.30复习: