文本转八进制

八进制是十六进制那个被遗忘的“表亲”:一种以 8 为基数的数制,每个数字精确对应 3 位二进制。Unix 文件权限(755、644)用八进制书写,每个字符都有八进制代码,就像它有十进制和十六进制代码一样。粘贴文本,本转换器会返回每个字节的八进制代码;粘贴以空格分隔的八进制代码,则可取回原始文本。

如何将文本转换为八进制

  1. 1

    输入文本

    普通字符;非 ASCII 输入默认采用 UTF-8 编码。

  2. 2

    每个字节变成一个八进制代码

    `A` = 十进制 65 = 八进制 `101`。`Z` = 90 = `132`。空格 = 32 = `40`。

  3. 3

    代码以空格分隔

    各字节代码用单个空格连接(`Hi` 变成 `110 151`)。不会补前导零。

  4. 4

    粘贴八进制以解码

    切换到“八进制 → 文本”,粘贴以空格分隔的八进制值;0 到 255 之间的每个值变成一个字节。

八进制快速示例

字符 十进制 八进制 二进制
A 65 101 1000001
a 97 141 1100001
0 48 60 0110000
空格 32 40 0100000
\n 10 12 0001010

为什么八进制仍然重要

大多数现代系统都倾向于十六进制,因为两个十六进制数字能干净地表示一个字节。八进制仍在少数场景中留存:

  • Unix 文件权限:chmod 755 表示所有者 = 7(rwx)、组 = 5(r-x)、其他 = 5(r-x)。每个数字都是三个权限位。
  • C/Python 转义序列:字符串字面量中的 \101 就是 A。C 语言整数字面量的前导零(int x = 0755)会被解释为八进制,这是一个众所周知的陷阱。
  • 嵌入式与复古系统:较早的 12 位、18 位和 36 位架构与八进制很契合。
  • umask 值:umask 022 将默认文件权限掩码设为 755。

文件权限表

八进制数字 权限 二进制
0 --- 000
1 --x 001
2 -w- 010
3 -wx 011
4 r-- 100
5 r-x 101
6 rw- 110
7 rwx 111

因此 chmod 644 = 所有者 rw-、组 r--、其他 r--,这是可读文本文件的默认设置。

常见陷阱

  • 在 C 语言中前导零很重要。int a = 010; 会把 a 设为 8,而不是 10。Python 3 取消了这一规则;请始终改用 0o10。
  • 八进制只使用 0-7 这些数字。8 和 9 在八进制中无效。如果看到它们,说明来源并非八进制。
  • Unicode 字节在八进制下会变大。一个 UTF-8 表情符号(4 字节)会变成 4 个三位八进制代码,共十二个字符;十六进制则是八个。对于大多数显示用途,十六进制更胜一筹。

常见问题

大多数情况下都不用,除非你在处理 Unix 权限或使用 \NNN 格式的 C 字符串转义。十六进制更紧凑,也更便于逐字节阅读。

因为每个八进制数字都精确对应三个权限位(读、写、执行)。这种记法自 1971 年被写入 AT&T Unix 后便一直沿用至今,它与底层位模式完美契合。

可以。切换到“八进制 → 文本”,粘贴以空格分隔的八进制值(例如 110 151)。0 到 255 之间的每个值都会变回一个字节,因此多字节的 UTF-8 字符会从各自的字节代码解码出来。

你的文本仅会发送到我们的服务器以执行转换,不会被存储或记录。

相关工具

此工具还提供其他语言版本