进制转换器
在二进制、八进制、十进制和十六进制之间转换数字。
如何使用 进制转换器
- 输入你的数值。
- 选择该数值所使用的进制。
- 查看该数值在全部四种进制下的表示。
关于 进制转换器
不同进制的存在,是因为不同的读者有不同的需求。硬件是二态的,所以万物底层都是二进制。十六进制之所以占有一席之地,是因为一位十六进制数字恰好对应四个比特——因此一个字节永远是两位十六进制数字,一眼就能看清。正是这种整齐的对应关系,让十六进制出现在颜色代码、内存地址、MAC 地址和字节转储中。八进制每位对应三个比特,这正是为什么 Unix 文件权限会写成 755 或 644——三组各三个比特,分别对应用户、组和其他用户。
输入一个数值,告诉工具它是用哪种进制书写的,就能同时得到全部四种进制的结果。请了解真实的限制:输入必须只包含数字,不能有负号、小数点或 0x 前缀。负数和小数会被直接拒绝,而不是被猜测处理。十六进制字母可以大写也可以小写;输出的十六进制结果统一为大写。
精度存在一个硬性上限。转换过程会经过一个 JavaScript 数字——即 IEEE-754 双精度浮点数——因此整数只有在不超过 9,007,199,254,740,991 时才是精确的。超过这个范围,数值会被四舍五入到最接近的可表示双精度数,二进制或十六进制输出的低位数字就会出错,这会让 64 位哈希值或 ID 超出可用范围。如果要转换字符而非数字,请使用文本转二进制;如果是十六进制颜色代码,请使用 HEX 转 RGB。一切都在你的浏览器本地运行。
常见问题
为什么程序员用十六进制而不是二进制?
因为一位十六进制数字恰好等于四个比特,所以十六进制是二进制的一种无损、紧凑的简写形式,便于人类阅读。一个字节是两位十六进制数字,一个 32 位颜色是八位。在十六进制和二进制之间转换不需要任何运算——只是替换而已。
我可以转换负数或小数吗?
不可以。此转换器只接受数字,负号或小数点都会被判定为无效输入而拒绝。它只处理 2、8、10、16 进制下的非负整数。
为什么我的超大十六进制数值转换出错了?
数值会经过双精度浮点数,而双精度浮点数只有在不超过 9,007,199,254,740,991 时才能精确表示整数。超过这个范围的数值会被四舍五入,导致输出的低位数字不可靠。一个 16 位的十六进制数值——例如一个 64 位哈希——就已经超出了这个范围。
为什么 Unix 权限用八进制书写?
因为权限由三个比特组成——读、写、执行——而一位八进制数字恰好能容纳三个比特。所以 755 是覆盖用户、组和其他用户的三位数字,其中 7 表示三个比特全部置位。
我可以使用 2、8、10、16 以外的进制吗?
这里不行——输入进制选择器只提供这四种,输出也同时显示全部四种。它们几乎涵盖了编程中所有的实际场景。

