show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们用二进制写了文件
- 写的时候也可以seek调整流头
- 这二进制写和字符写好像也差不多
- 为什么要有这么一个二进制写的方式呢?🤔
- 尝试直接写数字
- 失败
- 要把的是bytes-like
- 字节码
- 把 123 编码为 4字节有符号整型变量
- ">i"
-
- "big-endian"
- < - "little-endian" - 默认缺省
- i 有符号整形变量
-
- 现在把这4个字节写进去
- 写进去了么?
- 在terminal里观察一下
- rb
- r - read - 读模式
- b - binary - 二进制
- 解码之后出来的是一个元组样子的东西
- (123,)
- 需要用[0]得到第0各元素
- 123 用 txt文本的方式读写
- 用4个字节
- 运算的话,需要把字符串型转化为 int 型
- 123 用 binary二进制方式读写
- 用4个字节
- 运算的话可以直接运算
- 但是,二进制方式读写并没有独特的优势啊
- 我们再来试试
-
用二进制方式读写
- 4个数据
- 总共需要4*4=16字节
-
对比纯文本的话
- 3+4+5+6 = 17字节
- 而且还要加上3个分隔符
- 17+3 = 21 字节
- 最终文本转化为数字也需要开销
-
更何况二进制存储格式非常多
- 有符号无符号
- byte、short、int、long等
-
这一批可以写进去么?
- 写进去
- 去文件系统验证
- 可以读出来么?
- 用二进制读出来
- 读写成功
- pack和unpack
- 明确地规定了到底用哪种方式进行编码解码
- 这对于编程是很明确的
- 原来不同的系统有不同的数据编码方式
- c语言 大致规定了 不同数据类型的位数
- 但是还有些不明确的地方
- 比如 16位机 和 32位机 对于 int 长度
- 可能加法之后
- 出现了巨大的负数
- 这对于早期python用户是难以理解的
- 科学家、数学家
- 对于补码的概念还是不理解的
- 包括递归导致的空间不足
- 堆栈溢出等等
- 当时确实属于专业领域
- 他们会因此放弃使用python
- 他们需要的是科学计算
- 而不是成为程序员
- 所以易用易学是 python 的目标
- 如果出了问题
- python 会指出 Error 出在哪
- 哪个数据什么时候在哪不合适
- 这次在文件流中读写了二进制数字
- 在多数字的读写实践中,确认
- 二进制数字更有优势
- 文件流中可以读写浮点型数字么?🤔
- 下次再说👋