进制转换器 — 在十进制、十六进制、二进制、八进制之间转换
在十进制、十六进制、二进制和八进制之间转换数字。自动识别输入格式,实时预览 —— 完全在浏览器中运行,无需上传。
Number Base Converter
Convert numbers between decimal, hexadecimal, binary, and octal. Auto-detects input format — supports 0x, 0b, 0o prefixes. Also shows UInt/Int and ASCII values. Works entirely in your browser.
每个盯着十六进制转储、二进制掩码或八进制权限位看过的人,都知道进制之间来回切换的思维摩擦。十六进制值 0x7F 既是字符码(ASCII 中的 DEL)、位掩码(01111111),又是十进制数字 127 —— 但你只会按当前正在用的进制去想它,要切换就得停下来算一算。进制转换器通过同时显示四种表示、并在你键入时实时更新,去掉了这种摩擦。
让这个工具比计算器更快的是自动识别。从网络抓包里粘一个十六进制值进来,工具识别出 0x 前缀后立即给出对应的十进制值。从位掩码调试器里粘一段二进制字符串,无需切换模式,十六进制和十进制的对应值就同时出现。工具是为输入格式事先未知的场景设计的 —— 值来自一行日志、一个调试器观察点或一份配置文件,你需要把它显示成对当前任务最有意义的那种格式。
二进制按半字节分组看起来是个小细节,实际效果差别却很大。一段 32 位的二进制字符串比如 11111111111111111111111111111111,摊平 32 个字符一眼读不下去。分成 1111 1111 1111 1111 1111 1111 1111 1111 之后,对应的十六进制 0xFFFFFFFF 就一目了然 —— 每个半字节正好对应一个十六进制位。对于 8 位及以上的二进制输出,工具会自动应用这种分组,让结果更易扫读,而不是越看越糊涂。
使用方法
输入数字
用任意支持的进制输入数字:十进制(42)、十六进制(2A 或 0x2A)、二进制(101010 或 0b101010)、八进制(52 或 0o52)。工具会根据前缀记法或数字字符集自动识别输入进制。
查看四种表示
输出面板同时显示十进制、十六进制、二进制和八进制。每种表示都会在键入时实时更新。二进制输出按半字节(4 位一组)分组,便于阅读。
复制任意表示
点击任意进制旁的复制按钮即可复制对应的表示。十进制以纯数字形式复制,十六进制带 0x 前缀,二进制带 0b 前缀,八进制带 0o 前缀。
常见问题
对存在歧义的输入,自动识别是怎么工作的?
工具首先检查显式前缀(十六进制用 0x,二进制用 0b,八进制用 0o)。没有前缀时,它会分析数字字符集:包含字母 A-F 视为十六进制;只有 0 和 1、且长度为 4 或 8 的倍数时考虑二进制。如果仍存在歧义(例如 '10' 可能是十进制、十六进制、二进制或八进制),默认按十进制处理。
支持浮点数吗?
不支持。转换器只处理安全整数范围内的整数(JavaScript 中最大 2^53-1)。浮点数和小数表示(十六进制浮点、二进制小数)都不支持。需要 IEEE 754 浮点转换,请使用专门的二进制浮点工具。
可以输入负数吗?
可以。十进制在数字前加负号。十六进制、二进制和八进制的负号会被解释为基于自动识别进制的负值。不会应用二进制补码 —— 输出只是负数绝对值对应的简单整数值。
输入的最大值是多少?
最大 9,007,199,254,740,991(JavaScript 的 Number.MAX_SAFE_INTEGER,即 2^53-1)。对于需要 BigInt 语义的更大整数(在密码学、区块链以及某些数据库 ID 中很常见),请使用命令行工具如 bc 或 Python 的 int 类型。
为什么用这个而不是计算器 App?
计算器 App 一次只能显示一种进制。本工具同时显示四种,并随键入实时更新。这正是调试网络抓包中的十六进制值时的工作流 —— 同时对照二进制位模式和它代表的十进制 ID。
限制说明
- 仅支持整数不支持小数、科学计数法和十六进制浮点表示。包含小数点的输入会被拒绝。
- 不支持 BigInt超过 2^53-1 的值会被四舍五入或拒绝。对于超过此范围的密码学或数据库 ID,请使用支持任意精度整数的命令行工具。
- 无按位运算视图转换器以四种进制显示数字,但不提供按位视图(翻转位、移位、AND/OR/XOR)。需要按位运算,请使用程序员计算器,例如 macOS 计算器的程序员模式。
平台说明
- macOS
- macOS 计算器的程序员模式(Cmd+3)能做同样的转换。浏览器工具是和十六进制转储或调试器并排多进制显示的正确选择。
- Linux
- 命令行场景下,`printf '%x\n' 42` 和 `echo $((16#2A))` 可以处理一次性转换。浏览器工具同时显示四种进制。
- Web
- 完全在客户端运行。输入不会离开浏览器。