进制转换
- 十进制转二进制
方法:用十进制数除2,得到的商再除2,直到商为小于1时为止,然后把先得到的余数逆序依次排列起来,就是有效位的二进制数
- 二进制转十进制
二进制数从右到左用去乘以对应的乘积,结果相加就是对应的十进制数
乘法 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
---|---|---|---|---|---|---|---|---|
乘积 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
注意:二进制数1对应的乘积有数,0 对应的乘积得零
- 整数转二进制的位数:
int.bit_length()
num = 10
print(num.bit_length()) # 4
数据类型总结
按存储空间的占用分(从低到高)
数据类型 | 容量大小 | 是否可变 | 是否有序 | 访问顺序 | 数据特性 |
---|---|---|---|---|---|
布尔值 | 不可变 | 判断真假 | |||
整型 | 少量 | 不可变 | 直接 | 数字运算 | |
字符串 | 少量 | 不可变 | 有序 | 顺序 | 字符语句 |
集合 | 大量 | 可变 | 无序 | 元素不可变 | |
元组 | 大量 | 不可变 | 有序 | 顺序 | 安全只读 |
列表 | 大量 | 可变 | 有序 | 顺序 | 增删改查 |
字典 | 大量 | 可变 | 有序 | 键值 | 键值关联 |
编码的进阶
数据在内存中必须是Unicode编码,但数据用于网络传输或存储到硬盘中,必须是非Unicode编码(utf-8等等)
类名 | str类型 | bytes类型 |
---|---|---|
名称 | 字符串,文本文字 | 字节文字 |
单位 | 字符 | 字节 |
语法 | 单双三引号 | 单双三引号前加b(B) |
中文 | '中' | b'xe4xb8(非ascii元素16进制显示) |
英文 | 'alex' | b'alex'(ascii中的元素直接显示) |
编码 | Unicode | 可指定非Unicode编码比如UTF-8, GBK等 |
功能 | 字符串操作方法 | 同字符串操作方法 |
转译 | 可在最前面加r进行转译 | 可在最前面加r进行转译 |
用途 | 存储少量的常用的数据 | 网络的数据传输与数据存储 |
编码转换
以什么编码,必须以什么来解码
- 解码:
bytes.decode('指定编码')
(将指定编码解为Unicode,默认UTF-8) - 编码:
str.encode('指定编码')
(将Unicode编为指定编码,默认UTF-8)