§

Options

§

二进制(2 进制)

§

八进制(8 进制)

§

十进制(10 进制)

§

十六进制(16 进制)

§

自定义进制

华为 HarmonyOS 内核调试日志以十六进制输出内存地址与寄存器快照,驱动工程师解析掉电崩溃现场须在十六进制与十进制偏移量间换算;中兴 5G 基站固件升级包以二进制掩码定位版本字段,运维团队借助进制转换确认掉电保护标志位;OPPO 与中国移动嵌入式驱动以位运算组装 AT 指令标志字节,QA 工程师将八进制权限码与十六进制寄存器值对照 3GPP TS 协议逐位核对。此转换器在浏览器本地完成运算,无需上传数据。

进制转换的工作原理

每种位置计数系统都将数值表示为各位数字乘以基数幂次之和。切换进制意味着将同一数值用不同的幂级数重新书写。

  1. 验证输入字符集. 每种进制接受特定的数字集合。二进制接受 0 和 1;八进制接受 0-7;十进制接受 0-9;十六进制接受 0-9 和 A-F。超出所选字符集的字符会在转换开始前触发内联错误提示。
  2. 解析数值. 对于能放入 JavaScript Number 的值(最大 2^53-1),工具调用 parseInt(text, base)。超过此边界则回退到 BigInt,确保任意大整数的转换精度不受影响。
  3. 在各目标进制中重新渲染. 解析后的数值通过 Number.prototype.toString(base)BigInt.prototype.toString(base) 转换为各输出进制。四个标准面板(二进制、八进制、十进制、十六进制)与自定义进制面板同步更新。
  4. 应用格式化选项. 前缀开关可在二进制、八进制和十六进制输出前添加 0b、0o 或 0x。数字分组在每四位二进制数字和每两位十六进制数字处插入下划线。大小写开关可选择 A-F 的大写或小写形式。
  5. 实时跨面板同步. 编辑任意面板会触发 100 毫秒防抖的重新转换,更新其他面板。每次按键时,当前正在输入的面板被视为数据来源。

为什么使用进制转换器

  • 读取内存转储. 调试器、反汇编器和核心转储查看器以十六进制显示地址和寄存器值。将其转换为十进制,便于与同一跟踪中其他地方报告的计数、大小和偏移量进行比较。
  • 处理颜色代码. CSS、设计工具和图像格式以十六进制三元组表示颜色,如 #d2511a。将每对数字转换为十进制,即可得到颜色拾取器或无障碍检查器所需的 rgb(210, 81, 26) 形式。
  • 解读文件权限. Unix chmod 值以八进制表示:755 表示 rwxr-xr-x,只需将每位八进制数字转换为三位二进制位。此转换器一步完成映射,无需翻阅 man 手册即可核对权限设置。
  • 调试位标志. 网络协议、内核系统调用和硬件寄存器将多个布尔标志压缩到单个整数中。以二进制读取该整数,可一目了然地看出哪些位已置位,这正是排查标志未生效原因时所需的信息。

常见应用场景

进制转换在日常开发、安全和硬件工作中频繁出现,只要数字的含义不仅仅是一个计数值。

  • 嵌入式固件:从 JTAG 探针读取十六进制转储,找到函数地址,用调试脚本所需的十进制偏移量写入断点命令。
  • 网络安全:将点分十进制表示的 32 位子网掩码转换回二进制,统计前缀长度,然后以 CIDR 形式写入 ACL 规则。
  • CTF 解题与密码挑战:在十六进制、十进制和二进制之间反复切换,在 XOR 运算下比对泄露的密钥片段与候选明文。

一个完整示例

在十进制面板中输入 255。十六进制面板更新为 FF(开启前缀后显示 0xFF),二进制面板显示 11111111(分组后为 1111_1111),八进制面板显示 377。将自定义面板基数设为 36,同一数值渲染为 73。在十进制面板中输入超大数值 123456789012345678901234567890,十六进制面板使用 BigInt 路径渲染为 18EE90FF6C373E0EE4E3F0AD2

FAQ

什么是数字进制?

数字进制(基数)是位置计数系统在进位到下一位之前使用的不同数字的个数。十进制(10 进制)使用 0-9;二进制(2 进制)只用 0 和 1;十六进制(16 进制)使用 0-9 加上 A-F。切换进制时数字的值不变,只是数字的书写和分组方式发生改变。

为什么编程中使用十六进制?

一位十六进制数字恰好对应四位二进制位,因此两位十六进制数字对应一个字节,八位对应一个 32 位字。这使十六进制成为内存地址、寄存器内容、颜色三元组和加密密钥最紧凑的人类可读形式。读 0xFF 比读 11111111 快得多,同时位模式也一目了然。

能否转换超过 36 进制的数字?

此工具上限为 36 进制,因为这是 JavaScript 原生 parseInttoString API 的上限——它们以 0-9 加 A-Z 作为数字字母表。37-62 进制可通过自定义字母表实现(如比特币地址使用的 Base58),但由于每种更高进制都需要自己的规范数字顺序,它们被归为独立工具处理。

支持负数和浮点数吗?

负整数在每种进制中都以前置减号表示,与 Number.prototype.toString 的默认行为一致。在指定位宽(8、16、32、64 位)下的补码表示是我们计划新增的独立视图。浮点数进制转换也超出了当前版本的范围;此工具仅处理整数值。

进制转换是固件、安全和图形工作中反复出现的小任务。在浏览器标签页中完成运算,使用 Node 和 V8 已有的相同算术原语,计算快速且数据始终留在您的设备上。