理解八进制与十进制
八进制是以 8 为基数的计数系统,只使用 0 到 7。每一位的权重是右侧一位的 8 倍,例如 377₈ = 3×8² + 7×8 + 7 = 255₁₀。转换时必须按八进制解释输入,而不能把外观相似的数字当作普通十进制。
本工具使用 BigInt,不经过 JavaScript Number,因此超过 9,007,199,254,740,991 的整数仍然精确。很长的权限值、标识符、位字段或练习数据可以双向转换而不发生舍入。
使用方法
工具对数字字符严格,但允许不影响数值的格式。
- 根据现有表示选择“八进制转十进制”或“十进制转八进制”。
- 输入一个整数,可带正负号;八进制可带 0o 前缀。
- 长数字可用空格或下划线分组,解析时会自动移除。
- 点击“计算”,结果不会采用科学计数法,也不会四舍五入。
- 关键数据可反向转换一次,与规范化后的原值核对。
转换示例
案例覆盖常见权限、边界、负数和大整数。
| 输入 | 输出 | 说明 |
|---|---|---|
| 17₈ | 15₁₀ | 一个 8 加 7 等于 15。 |
| 377₈ | 255₁₀ | 对应一个无符号字节的最大值。 |
| 755₈ | 493₁₀ | 常见 Unix 权限数字的数值解释。 |
| 1000₈ | 512₁₀ | 表示 8 的三次方。 |
| -20₈ | -16₁₀ | 负号作用于整个数值。 |
| 18446744073709551615₁₀ | 1777777777777777777777₈ | 64 位无符号最大值可精确转换。 |
输入规则
八进制允许 0 到 7、可选正负号和可选 0o 前缀。本工具不会依赖“前导零自动表示八进制”的旧式语言规则,转换方向由用户明确选择。
十进制只接受完整整数,不接受小数、指数、逗号或货币符号。空格和下划线可用于分组。输出会去除无意义的前导零和正号。
- 八进制合法数字只有 0、1、2、3、4、5、6、7。
- 十进制允许 0 到 9,但不能含小数部分。
- 两个方向都支持负数。
- 精度没有固定 32 位或 64 位上限。
算法原理
解析八进制时,先校验符号、前缀和字符,再把每一位按“累计值×8+当前数字”组合成精确整数。
十进制转八进制可理解为不断除以 8 并记录余数,再反向读取余数。BigInt 提供等价的精确进制格式化。
本页只处理数学整数,不处理八进制小数,也不会把负数解释成固定宽度补码。
常见用途
八进制在三位二进制分组天然有意义的场景仍很常见。
Unix 权限
核对 644、755、2750 等权限模式的数值。
编程字面量
验证使用 0o 前缀的常量、解析器和测试数据。
旧系统资料
阅读历史手册、嵌入式系统或旧文件格式中的八进制数。
按三位观察二进制
一个八进制位正好对应三位二进制,便于压缩查看标志位。
常见错误与边界
最常见问题是把十进制里普通的 8、9 放进八进制。
出现 8 或 9
八进制不存在这两个数字,应确认源值是否其实是十进制。
误解前导零
转换方向由选择框决定,前导零不会自动切换进制。
输入浮点格式
12.5 和 1e6 会被拒绝,因为本工具只处理精确整数。
混淆权限文本与数值
传给 Unix 工具时通常保留 755 三位形式,仅在需要数学值时转换。
与其他工具的区别
相同数字可以从不同角度处理。
通用进制转换器
适合任意进制;本页专注八进制和十进制,规则更直接。
二进制转换器
二进制展示每个位,八进制每位压缩三个位。
二进制补码
本页负号表示数学负数,补码工具则解释固定宽度位模式。
位运算计算器
进制转换不改变数值,位运算会组合或移动位。