show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次讲了 triple 的来源
- tri- 代表三
- 三引号中
- 可以让字符串原样输出
- 结尾
\
还是需要通过转义\\
- 黑暗森林 快被摸排清了
- 还有哪个 转义字符
- 没 研究过吗?
- 还有哪个 转义字符
- 转义字符
- 和字符一样 也存储于 字节当中
- 由字符组成的字符串
- 和 由字节组成的 字节序列
- 有什么关系呢?🤔
- 可以相互转化吗?🤔
- 字节序列 是字节的序列
- 里面 存储的是一个个字节
- 字符串 是 字符的序列
- 里面 存储的是一个个的字符
- 字符 也得
- 存储到 字节当中 啊!
- ascii字符变量
- 存储在字节中
- 究竟是什么状态呢?
- 存储在字节中
- ascii 字符的 序号范围是
- 从 0 到 127
- 先要获得
- 从 0 到 127 的 字节状态
- 需要 使用struct包
- 包(module) 就是模块
- 导入了 就能用 模块中的功能
- 导入struct包
- import struct
- 包(module) 就是模块
- 导入之后
- 就可以 help(struct) 查询帮助
- struct 是 结构的意思
- 指的是 常用类型的 存储结构
- 这个struct
- 怎么用呢?
- struct包中
- 有 pack函数
- 把数字 变成 字节的形态
- 把ord("a") 对应的数字0x61
- 或者说 97
- 变成 字节的形态
- 把ord("a") 对应的数字0x61
- 逗号前的 "b"
- 指的是字节(byte)
- 逗号后的 ord("a")
- 指的是 字符a的序号
- 如果是"s"的字节形态呢?
- 字符s的字节形态
- 为 b's'
- 这样 字符 就成了 字节了吗?
- 注意 细节
- 注意'a'前面 还有一个b
- 'a'是 单字 的 字符串
- b'a' 是 单字节 的 字节序列
- 这两
类型
完全不同
- 字节b'a' 是 什么呢?
- 字节状态 可以用 2个16进制数 来表示
- b"a" 也就是 b'a'
- 相当于b'\x61'
- b"a" 也就是 b'a'
- 其实 ord("a") 就是 97
- 也就是 0x61
- 0x61 就是 字符a 的 字节形态
- b"a" 和 b"\x61" 是
同样
的- 就是字符"a"的 字节形态
- 为了看起来清楚明确
- 把b"\x61" 表示为b"a"
- 这样 也就可以
- 直接看到 字节对应的字符
- 😂
- 如何理解struct.pack呢?
- 把东西 封进 规定的封装
- 把字符a的序号 封进 单字节形式的封装
- 把数字97 封进 字节形式的封装
- 观察他的字节状态
- 先退出python3 游乐场
- 复制 下面的代码
import struct
for n in range(0,128):
b = struct.pack("b",n)
print(b,end=",")
-
键入vi show.py
- "+p
- 将系统剪贴板上的内容
- 粘贴上去
- "+p
-
把从0-127的数字都封到字节里面
- 把 ascii 字符 对应的序号
- 封装进了 一个个字节
- 好多字节呀~😄
- 从字节状态可以看到已经有
- 数字 0、1、2
- 这里很明显能看到0
- 还有0前面 的 一堆符号
- 黑暗森林里的字符 若隐若现
- 大写 A、B、C
- 小写 a、b、c
- 都可以有
- 数字 0、1、2
- 先加上 换行
- 从0数到7
- 换1行
- 再从0数到7
- 隐约看到了 ascii码的结构
- 我不想看
字节
状态 呢- 我想看
字符
状态
- 我想看
- 我不想看
- 在前面出现的
- \r、\n、\t
- 我们都已经了解了
-
b'\x1b' 对应 \e
- 也就是 escape
- 并没有 被显示为 转义字符的形式
-
森林 依然 黑暗
- 这真可怕!😱
-
数字 转化成 字节状态 后
- 可以 再把字节
解码
吗?- 或者说
解包
吗?
- 或者说
- 可以 再把字节
- 对字节状态解码(decode)
- 或者说是解包
- struct.unpack
- 或者说是解包
- 字节 解包出来
- 是 序号
import struct
for n in range(0,127):
b = struct.pack("b",n)
c = struct.unpack("b",b)[0]
print(chr(c),end="")
if n % 16 == 0:
print()
- 解包封包和编码解码有啥不一样吗?
- 这又是一圈
- pack
- unpack
- 就像
- encode
- decode
- 一个字符可以编码成字节序列
- 字节序列 也可以解码成 字符
- 但是 只能对 字符串
- 进行操作
- 一个数字可以封包到一种数字格式
- 数字格式可以包括
- 单字节
- 双字节
- 四字节
- 八字节
- 数字格式可以包括
- 先总结一下
- struct包
- 就是 封包格式
- 可以把数字 封包到 字节里
- pack函数 负责 封包
- unpack函数 负责 解包
- str.encode/str.decode
- 是针对字符的编/解码操作
- struct.pack/struct.unpack
- 是针对 数字 的封包/拆包操作
- 无论类型是什么
- 数字型
- 字节序列型
- 字符串型
- 都可以 定义为 变量
- 变量是编程语言的基础
- python是如何声明变量的呢??👊
- 变量是编程语言的基础
- 下次再说👋🏻