计算机在设计时采用8位(bit)作为一个字节(byte)
8位一个字节,8bit=1byte
1024byte=1kb(千字节)
1024kb=1mb
1024MB = 1GB
1024GB = 1TB
两个位置可以表示四种状态:00,01,10,11
所以,一个字节(2的8次方)能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。
比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。
ASCII
最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号, 这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
Unicode
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符 (如果要用到非常偏僻的字符,就需要4个字节)。
UTF-8
本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。 UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节, 常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。 如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间
ord():字符转编码
print(ord('A')) print(ord('中'))
65 20013
chr():编码转字符
print(chr(66)) print(chr(20013))
B 中
encode
字符串的编码转换
编码:将字符串转换为二进制数据(bytes)
解码:将bytes类型的数据转换成字符串类型
# 字符串的编码转换 # 编码:将字符串转换为二进制数据(bytes) # 解码:将bytes类型的数据转换成字符串类型 s = '天涯共此时' # 编码 print(s.encode(encoding='GBK')) # 这种编码一个中文占两个字节 print(s.encode(encoding='UTF-8')) # 在tuf-8这种编码中一个中文占三个字节
b'\xcc\xec\xd1\xc4\xb9\xb2\xb4\xcb\xca\xb1' b'\xe5\xa4\xa9\xe6\xb6\xaf\xe5\x85\xb1\xe6\xad\xa4\xe6\x97\xb6'
decode
s = '天涯共此时' # 解码 # byte代表的就是一个二进制数据 byte = s.encode(encoding='GBK') # 编码 print(byte.decode(encoding='GBK')) # 解码,用什么编码就要用什么解码 byte = s.encode(encoding='UTF-8') print(byte.decode(encoding='UTF-8)'))
天涯共此时 天涯共此时
进制转换
bin()
oct()
hex()
转化为16进制
n = 16 print(hex(n))
0x10