在线进制转换器
输入一个数,同时显示它的二进制、八进制、十进制、十六进制表示,一次转换四种结果。
使用说明
第1步:输入数值。可以直接写 255、1A,也可以带前缀写 0xFF、0b1010、0o377,工具会自动识别进制。
第2步:选当前进制(带前缀时会被自动覆盖)。
第3步:点「开始转换」,同时得到二进制、八进制、十进制、十六进制四种结果,以及按权展开的验算过程。
输入校验是严格的:在二进制下输入「102」会直接报错,而不是悄悄截断成「10」。这一点很重要——很多转换器会静默出错,让人以为结果是对的。
四种进制速查表(0 ~ 15)
这张表建议记熟,看颜色代码、文件权限、寄存器值时全靠它:
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
十六进制用 A ~ F 表示 10 ~ 15。为什么是 16?因为 1 位十六进制正好对应 4 位二进制,而 4 位二进制的全部组合刚好是 24 = 16 种。八进制同理:1 位八进制对应 3 位二进制,23 = 8。
转换原理:两个方向,两个方法
其他进制 → 十进制:按权展开,逐位相乘再相加。
每位数字乘以「基数的位次次方」,位次从右往左、从 0 开始。例如十六进制的 1A:
1A = 1 × 161 + 10 × 160 = 16 + 10 = 26
二进制的 11010 = 1×16 + 1×8 + 0×4 + 1×2 + 0×1 = 26。工具里的「按权展开」一栏就是把这个过程直接列出来,方便对照验算。
十进制 → 其他进制:除基取余,倒序读取。
用 26 转二进制为例:26 ÷ 2 = 13 余 0;13 ÷ 2 = 6 余 1;6 ÷ 2 = 3 余 0;3 ÷ 2 = 1 余 1;1 ÷ 2 = 0 余 1。把余数从下往上读,得到 11010。
关键点在于「倒序读」——余数是从最低位开始产生的,很多人第一次学时顺序搞反,结果正好是正确值的镜像。转十六进制就把除数换成 16,转八进制换成 8,方法完全一样。
为什么程序员偏爱十六进制
核心原因只有一个:十六进制和二进制之间的转换不需要计算。
4 位二进制 = 1 位十六进制,所以只要把二进制从右往左每 4 位切一段,逐段换成十六进制字符即可。反过来也一样,一位换四位。举例:
| 二进制 | 1111 | 1111 | 1111 | 1111 |
|---|---|---|---|---|
| 十六进制 | F | F | F | F |
所以 11111111 直接读作 FF,不用做任何除法。而同样的 8 位,写成十进制 255 就得算一遍,而且看不出位数。
另一个好处是「位」看得见。1 字节 = 8 位 = 2 位十六进制,1 位十六进制 = 4 位二进制,这种整齐的对应关系让十六进制天然适合表达二进制数据。八进制则是 1 位对 3 位二进制,所以在早期 12 位、36 位字长的机器上更常见,现在主要用于文件权限。
四个天天见到的实际例子
1. 网页颜色代码 #FF5733。这就是三个十六进制字节:FF = 255(红)、57 = 87(绿)、33 = 51(蓝),写成 RGB 就是 rgb(255, 87, 51)。理解了这一点,看到颜色代码就能大概猜出颜色——三位都接近 FF 是白色系,都接近 00 是黑色系。
2. Linux 文件权限 chmod 755。7 = 111(读+写+执行)、5 = 101(读+执行)、5 = 101(读+执行),三位分别对应属主、属组、其他人,结果是 rwxr-xr-x。所以 755 的含义不用背,按二进制拆开就明白了:4 是读、2 是写、1 是执行,数字相加决定权限组合。
3. 子网掩码 255.255.255.0。每个 255 是 8 个 1,即 11111111。整个掩码是 24 个 1 加 8 个 0,这就是「/24」的由来。判断两台设备是否在同一网段,本质就是在做二进制的按位与运算。
4. 内存地址与调试信息。崩溃日志里的 0x7ffd3c4a 这类地址、汇编里的寄存器值,几乎全用十六进制表示——因为地址本身是二进制位模式,用十六进制写既短又能按「位」对齐。
再补一个:内存容量和编号的对应关系也是二进制。1 KB = 210 = 1024 字节,1 MB = 220 字节,所以 32 位系统最大寻址 232 = 4 GB。这也是为什么 32 位系统装 8 GB 内存只能用 3 GB 多。
常见问题
十六进制里的字母是什么意思?
A ~ F 分别代表 10 ~ 15。因为十进制只有 0 ~ 9 十个符号,而十六进制需要 16 个符号,就用字母补齐。例如 1A = 1×16 + 10 = 26(十进制)。大小写不影响结果。
支持负数和小数吗?
当前版本支持非负整数。负数在计算机里通常以补码形式表示(例如 8 位下 −1 是 11111111,即十六进制 FF),小数则涉及浮点数的 IEEE 754 编码,两者规则与整数转换完全不同,本工具暂未包含。
为什么二进制下输入 102 会报错?
因为二进制只有 0 和 1 两个字符,2 是不合法的。有些转换器会静默截断成 10 并给出结果,让人误以为输入没问题。本工具的做法是直接报错,避免悄悄算错。
0x、0b、0o 前缀是什么?
分别是十六进制、二进制、八进制的写法标记,源自 C 语言并沿用至今。0xFF = 255,0b1010 = 10,0o377 = 255。本工具支持带前缀输入并自动识别进制,输出时也会附上带前缀的写法。
转换很大的数字会不会出错?
JavaScript 能精确表示的整数上限是 253 − 1(约 9×1015),超过后精度会丢失。本工具在检测到这种情况时会直接提示,而不是给出一个看起来正常实则错误的结果。需要处理更大整数请使用支持任意精度的工具或语言。
「补齐到 8/16/32 位」有什么用?
用于按固定宽度查看位模式,这在看寄存器、颜色通道、掩码、协议字段时很常见。补齐规则是 1 位十六进制 = 4 位二进制、1 位八进制 = 3 位二进制,所以 8 位对应 2 位十六进制。不关心位对齐时选「不补齐」即可。
进制转换有什么实际用途?
常见的有:网页颜色代码(十六进制)、Linux 文件权限(八进制)、子网掩码与 IP 计算(二进制)、内存地址与调试日志(十六进制)、嵌入式开发的寄存器配置(二进制与十六进制)。学计算机相关课程时,进制转换也是必考基础。
输入的数值会上传吗?
不会。转换完全在您的浏览器本地完成,输入的数值不会联网传输,也不会被保存。