八进制(oct)

回忆上次内容

  • 什么是 转义?
  • 转义转义 转化含义
  • ​\​​ 是 转义字符
  • ​\n​​​、​​\r​​是 转义序列
  • 还有什么 转义序列 吗?
  • ​\a​​是 响铃
  • ​\b​​ 退格键
  • ​\t​​ 水平制表符 tab键
  • ​\v​​​、​​\f​​ 实现喂纸不回车
  • 通过 16进制数值 转义
  • ​\xhh​
  • 输出 (​​hh​​​)<sub>​​16进制​​​</sub>对应的​​ascii​​字符
  • 如果我们不输入​​x​
  • 会发生什么呢?

[oeasy]python0043_八进制_oct_octal_october_octave_进制

  • 为什么会输出 ​​S​​ 呢?🤔

查询文档

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_02

  • 查询主题 ​​STRINGS​

查询结果

  • 表示方法
  • \xhh 是 ​​16进制​​ 表示方法
  • \ooo 是 ​​8进制​​ 表示方法

[oeasy]python0043_八进制_oct_octal_october_octave_进制_03

  • 去试试

从 16进制 到 8进制

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_04

  • 16进制表示法 没有问题
  • 那 8进制 呢?
  • 有没有 求八进制值的函数 呢?
  • 就像 hex 、 bin

oct函数手册

[oeasy]python0043_八进制_oct_octal_october_octave_转义_05

  • oct 就是 求八进制值的函数

[oeasy]python0043_八进制_oct_octal_october_octave_进制_06

  • 返回的 是
  • 八进制形式的 字符串

具体表示

[oeasy]python0043_八进制_oct_octal_october_octave_进制_07

  • 确实可以
  • 用 3位 八进制数 表示字符
  • ​\141​
  • 123 为什么 对应 ​​S​​ 呢?

查询帮助

  • S 的序号 是83
  • 83 对应的 八进制数 是

  • ​0o123​
  • - 0 代表这是个 数字
  • - o 代表 oct
  • 八进制

[oeasy]python0043_八进制_oct_octal_october_octave_进制_08

  • 为什么 oct 代表八进制呢?

词根溯源

  • oct来源

[oeasy]python0043_八进制_oct_octal_october_octave_进制_09

  • eight 和 oct 同源
  • 就如同
  • ten 和 decimal
  • two 和 binary

octopus

  • 八只脚 的 章鱼 🐙

[oeasy]python0043_八进制_oct_octal_october_octave_转义_10

  • 章鱼也叫八爪鱼(octopus)

octave

  • 八度音阶
  • 俗称的 八度音
  • 高八度
  • 低八度

[oeasy]python0043_八进制_oct_octal_october_octave_进制_11

  • octave

october

  • october 是
  • 罗慕路斯(Romulus)历法中的
  • 八月
  • 罗慕路斯 是 在七个山丘上
  • 创建罗马 的 弟弟

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_12

  • 有什么证据吗?

连续的月份

月份

数字

词根

单词

7

seven

septem-

september

8

eight

octo-

october

9

nine

novem-

november

10

ten(decimal)

decem-

december

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_13

  • 只有 304天
  • 剩下的61天 太冷了
  • 也没农活
  • 不 需要记忆

后来的历法

  • 庞贝留斯在年底 加了两个月
  • Ianuarius
  • Februarius
  • 仔细看 首行的 月份

儒略历

  • 凯撒历
  • Julian Calendar

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_14

  • 凯撒 把 新加的两个月 放到年初
  • 一月大月 31天
  • 二月小月 28天
  • 后人把
  • Quintilis 改成 July
  • 纪念 Julius Caesar
  • 尤里乌斯·凯撒
  • Sextilis 改成 Augustus
  • 纪念 Octavius Augustus
  • 屋大维·奥古斯都
  • 屋大维 和 八
  • 还真的是 有缘

八进制字符

  • 可以观察到
  • ​0o41​​​ 对应字符 ​​!​
  • ​\041​​​ 和 ​​\41​​ 都可以
  • 表示 这个字符 ​​!​

[oeasy]python0043_八进制_oct_octal_october_octave_转义_15

  • 那么
  • 问题来了
  • "\123"究竟
  • 是 "\12" + "3" 呢?
  • 还是 "\123" 呢?

查询

  • 以 "\n" 为切入点

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_16

  • (0A)<sub>16进制</sub>
  • (10)<sub>10进制</sub>

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_17

  • (12)<sub>8进制</sub>
  • 想先把 前两个字符(01)
  • 当做一个整体 来转义
  • 而不是 以前三个(012)
  • 来 转义 呢?

歧义

  • 如果 直接输出​​\121​
  • 结果是 ​​Q​
  • ​0o121​​​ 对应着 ​​0x51​

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_18

  • 如果 直接输出​​\12​
  • 可以输出换行符
  • 如果我就想
  • 用 8进制 输出换行符
  • 并且 后面 加一个字符​​1​​ 呢?

[oeasy]python0043_八进制_oct_octal_october_octave_转义_19

  • 明确 是 两个字符

还有一种方法

  • 给 前面的​​\12​
  • 前面补​​0​
  • 修改为​​\012​

[oeasy]python0043_八进制_oct_octal_october_octave_八进制_20

  • 两种方法 都可以
  • 不过 第二种
  • 去除歧义的能力 更强
  • 回忆一下 进制

总结

  • 这次研究了
  • 通过 八进制数值 转义
  • ​\ooo​
  • 把(​​ooo​​​)<sub>​​8进制​​​</sub>对应的​​ascii​​字符输出
  • 转义序列
  • ​\n​​​、​​\t​​ 是 转义序列
  • ​\xhh​​ 也是 转义序列
  • ​\ooo​​ 还是 转义序列

[oeasy]python0043_八进制_oct_octal_october_octave_进制_21

  • 现在 总共有
  • ​几​​种进制 了呢?🤔