HandyTools Hub

进制转换器

在二进制、八进制、十进制和十六进制之间转换

输入

结果

使用方法

  1. 输入数字 — 在任何进制系统中输入数字——二进制(2 进制)、八进制(8 进制)、十进制(10 进制)或十六进制(16 进制)。输入接受整数和小数值。
  2. 选择进制 — 从下拉菜单中选择输入数字的进制。转换器将实时自动显示所有其他进制的等效值。
  3. 复制结果 — 点击任意转换值旁边的复制按钮将其复制到剪贴板。使用前缀开关添加常见的编程前缀,如 0b、0o 或 0x。
  4. 在代码中使用 — 将转换后的值直接粘贴到您的源代码、调试器或任何需要特定数字进制格式的应用中。

进制转换是如何工作的

每个数字系统都是按位计值的:一个数字的值取决于它所在的位置。整数的值是每一位数字乘以进制的该位次幂(从右侧的零次幂开始)再求和。转换时,工具把清理后的输入解析成一个 JavaScript 数字,再按目标进制重新编码。小数则单独处理。每个小数位的值是该数字除以进制的位次幂,为了输出结果,工具把小数反复乘以目标进制,取整数部分作为下一位数字,并保留余数继续。正是这种反复相乘导致非有限小数被截断。

在这之前,输入会被清理:去掉下划线、逗号和空格,并把字母转为大写。这样你可以直接粘贴像 1111_0000 这样分组好的二进制,或像 1,024 这样格式化过的十进制,无需预处理。

功能特性

  • 在二进制、八进制、十进制和十六进制数字系统之间相互转换。
  • 输入时实时转换更新。
  • 支持大数字和小数值。
  • 一键复制任意转换值到剪贴板。
  • 输入验证并显示清晰的错误信息。
  • 可选编程前缀(0b、0o、0x),可直接用于代码。

实操示例

简单整数。 十进制 255 变成二进制 11111111、八进制 377、十六进制 FF。反过来读:255 是 2^8 - 1,所以二进制是八个 1,十六进制用两个 F,每个 F 代表 15。

带字母的十六进制。 十六进制 1A4 变成十进制 420。验证:1 × 256 + 10 × 16 + 4 = 420。用二进制表示是 110100100,用八进制是 644。

会循环的小数。 十进制 0.1 变成二进制 0.00011001、八进制 0.06314631、十六进制 0.19999999。三者都是对该值在这些进制中无精确有限表示的截断近似。

二进制小数。 二进制 1010.101 变成十进制 10.62500000、八进制 12.5、十六进制 A.A。小数部分 .101 是 1/2 + 0/4 + 1/8 = 0.625。

接受的输入与前缀

进制数字输出前缀
二进制(2)0-10b
八进制(8)0-70o
十进制(10)0-9无
十六进制(16)0-9、A-F0x

前缀按钮会给复制的结果加一个修饰。它们只作用于与你在输入端所选进制相匹配的那一行结果。例如,你输入一个十六进制值并选择 0x,只有十六进制那一行会带前缀;二进制、八进制和十进制行保持原样。切换输入进制后,前缀会随之移动,因为它始终绑定源进制,而不是全局应用。

精度与限制

  • 小数最多八位并截断,而不是四舍五入。 任何在目标进制中循环的值都会带有小误差。
  • 十进制行会把小数补齐到八位。 0.5 显示为 0.50000000;其他进制会去掉末尾的零。
  • 整数受限于 JavaScript 安全范围(2^53 - 1)。 更大的值可能丢位。
  • 拒绝负数。 负号不是合法数字。
  • 仅支持 2、8、10、16 进制。 不支持 32 进制、36 进制和任意进制。
  • 输出始终为大写。 接受小写十六进制输入,但从不产生小写输出。
  • 去掉前导零。 000255 和 255 转换结果相同。

常见错误

  • 把二进制里的 10 当作十。 它是二;位的权重是 2 的幂。
  • 在输入框里输入前缀。 0x1F 在十六进制字段会失败,因为 x 不是十六进制数字;请输入 1F 并使用开关。
  • 期望精确的二进制小数。 像 0.1 这样的值在八位之后是近似值。
  • 把逗号当作小数点。 逗号会被当作分组符号去掉,因此 1,5 会被读成 15,而不是 1.5。
  • 以为前缀会作用于每一行。 它只修饰与所选输入进制匹配的那一行结果。

真实场景

网页颜色通道。 FF5733 这样的 CSS 十六进制颜色是三个用 16 进制写成的字节。把进制设为十六进制,分别输入 FF、57、33,它们会变成十进制 255、87、51,正好是 RGB 三元组。工具转换的是整个值,所以请先把六位字符串拆成两两一组。

Unix 文件权限。 755 这样的权限模式是按八进制读的,不是十进制。把 755 从 8 进制转换,得到二进制 111101101,按 111(读、写、执行)分给属主、101 分给组、101 分给其他人。十进制 493 是同一个值,这也是为什么权限计算器更适合这项具体任务。

位掩码和标志。 写作二进制 00001111 的掩码是十进制 15、十六进制 F。在这些表示之间转换,更容易推断哪些位被置位。

调试器地址。 崩溃日志可能显示地址 0x7FFE0A10。需要查看各个位时,把它从十六进制转成十进制 2147352592 或二进制。

有两条捷径可以快速验证工具的输出。从二进制转十六进制时,从右往左把位分成四位一组并逐组转换:110100100 变成 1 | 1010 | 0100,也就是 1A4。从二进制转八进制时改为三位一组:110 | 100 | 100 变成 644。两者都与前面的示例一致,因此如果手动分组与转换器不一致,请检查你从哪里开始分组。记住要从右侧开始分组,只有在需要固定宽度时才用零补齐最左边一组。

使用场景

  • 将十六进制颜色代码转换为 RGB — 快速将 #FF5733 等十六进制颜色代码转换为十进制 RGB 值,用于设计工具、CSS 或图像处理库。
  • 在编程中处理二进制数据 — 在处理位掩码、标志、底层数据结构或嵌入式系统编程时,在二进制和其他进制之间进行转换。
  • 调试内存地址 — 将调试器和崩溃日志中的十六进制内存地址转换为十进制或二进制,以便更轻松地分析和交叉引用。
  • 数学和计算机科学教育 — 学习和验证课程作业、考试或自学中的数字系统转换,即时检查您在所有进制中的手动计算。

相关工具

常见问题

这个转换器支持哪些进制?

支持二进制(2 进制)、八进制(8 进制)、十进制(10 进制)和十六进制(16 进制),并在所有进制之间实时转换。

可以转换小数吗?

可以。转换器支持任意受支持进制下的整数和小数。

0b、0o、0x 前缀有什么用?

它们是编程中二进制、八进制和十六进制字面值的标准前缀。开启前缀开关后,复制结果时会自动添加。

可以输入负数吗?

不可以。负号在四种受支持进制中都不是合法数字,因此像 -5 这样的值会报输入无效。转换器只处理数值大小。如果确实需要处理符号,请去掉负号,转换绝对值,再在自己的代码里把符号加回去。

它能精确转换多大的整数?

整数转换经过 JavaScript 的数值类型,因此只有在 2^53 - 1(即 9,007,199,254,740,991)以内才是精确的。超过这个范围,中间的十进制值会被舍入,其他进制里得到的数字可能与原值不符。对于超大整数,请使用支持任意精度整数的语言或专门的大数库。

为什么十六进制输出显示为大写字母?

工具会把输入和输出统一规范成大写以保持一致。它还会在解析前去掉下划线、逗号和空格,因此像 1111_0000 或 1,024 这样分组的数值可以直接粘贴转换。大小写不影响数值:ff 和 FF 都表示 255。

由 HandyTools Hub 团队审校 · 最后更新