show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次在文件流中读写了二进制数字
- 在多数字的读写实践中,确认
- 二进制数字更有优势
- 文件流中可以读写浮点型数字么?🤔
- 查看帮助
- 使用"d"模式
- "d" 双精度
- 对2.375编码
- 对数字编码并解码成功
- 但是他和http://www.binaryconvert.com/结果并不一致
- 为什么呢?
- 他们两个
- 一个是big-endian
- 另一个是little-endian
- 顺序不同
- 什么意思呢?
- big-endian和little-endian是两种字节存储机制
- 描述在多字节数中各个字节的存储顺序
- 这个词最早出现在《格利佛游记》
- 该小说在描述Gulliver畅游小人国时碰到了
- 对水煮蛋
- 该从大的一端(Big-End)剥开
- 还是小的一端(Little-End)剥开
- 争论而引发了一场战争
- 并形成了两支截然对立的队伍
- 支持从大的一端剥开的人S就称作Big-Endians
- 而支持从小的一端剥开的人就称作Little-Endians
- 小端模式
- 强制转换数据不需要调整字节内容
- 1、2、4字节整型的存储方式一样
- 大端模式
- 符号位的判定固定为第一个字节
- 容易判断正负
- x86,MOS Technology 6502,Z80,VAX,PDP-11等处理器为Little endian
- Motorola,PowerPC970,System/370,SPARC(除V9外)等处理器为Big endian
- ARM, PowerPC (除PowerPC 970外), DEC Alpha, SPARC V9, MIPS, PA-RISC and IA64的字节序是可配置的
- 浮点数编码没有问题
- 只要我们pack、unpack使用同样的模式就可以
- 写进去8个字节
- 确实是8个字节
- 确实是pack之后的二进制编码
- 8字节读出来之后
- 确实可以原样解回来
- 下面我们来比较一下
- 文本和二进制哪个更适合存储浮点
- 对于3.375这个数字
- 大小
- 字符串用5个字节
- 浮点用8个字节
- 不过选择单精度就是4个字节
- 精度
- 有效数字越多,字符串劣势越明显
- 不论什么精度,浮点型数字大小是固定的
- 转化
- 字符串需要转化得到浮点数
- 二进制读出来就是浮点数
- 这次在文件流中读写了二进制浮点
- python文件流读写浮点数还是很方便的
- 这就比他的前辈ABC语言强了好多
- 为什么python对文件读写这么重视?🤔
- 下次再说👋