什么是二进制转十六进制转换器?
这个工具可以把一个二进制(基数2,只有 0 和 1 两个数字)表示的数转换成十六进制(基数16,包含 0-9 以及 A-F)。十六进制在编程、内存地址、颜色代码和程序调试中应用非常广泛,因为它能更紧凑地表示二进制数据——每 4 个二进制位(比特)正好对应 1 位十六进制数字。
如何使用
在输入框中键入或粘贴一个二进制数字,例如 11010110,然后提交即可。工具会忽略空格和多余字符,因此 1101 0110 这样的写法同样有效。结果会显示对应的十六进制值、等价的十进制值以及总位数。
换算公式详解
转换的核心原理是 \(16 = 2^4\)。算法会先在二进制字符串的左侧补 0,直到长度是 4 的倍数,然后从右往左把它拆分成一个个 4 位的小组,每组称为「半字节(nibble)」。每个半字节的取值范围是 0 到 15,按下式计算
$$\text{Hex}_{16} = \sum_{i=0}^{n-1} d_i \cdot 16^{i}, \quad d_i \in \{0\text{–}9,\,A\text{–}F\} \;\leftarrow\; \text{Binary (base 2)}$$即 \(8\cdot b_3 + 4\cdot b_2 + 2\cdot b_1 + b_0\) 计算,得出的值再映射为一位十六进制数字(0-9 之后接 A-F)。把这些数字依次拼接起来,就得到了最终的十六进制结果。
实例演算
以 11010110 为例。拆分成半字节:1101 和 0110。第一组等于 \(8+4+0+1 = 13 = D\);第二组等于 \(0+4+2+0 = 6\)。因此十六进制结果为 D6,换算成十进制是 214。
二进制四位值到十六进制数字查找表
将二进制转换为十六进制的最快方法是将比特分成四个一组(称为四位值),并用单个十六进制数字替换每个四位值。因为 \(2^4 = 16\),每个4位模式恰好映射到16个十六进制数字中的一个。记忆或参考下表可以让你逐个四位值转换任何二进制数,无需进行除法。
| 4位二进制(四位值) | 十进制(10进制) | 十六进制数字(16进制) |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
实际例子:字节 11010110 分成 1101 和 0110。根据表格,这些映射到 D 和 6,得到十六进制值 D6,等于十进制 214。如果二进制数的长度不是4的倍数,在分组前在左侧用前导零填充(例如,101101 变成 0010 1101 → 2D)。
关键术语
- 比特
- 数字信息的最小单位,包含单个二进制值0或1。该词是"二进制数字"的缩写。
- 四位值
- 四个比特的一组。因为四个比特表示 \(2^4 = 16\) 种可能的值,一个四位值恰好对应一个十六进制数字——这正是使二进制到十六进制转换如此直接的原因。
- 字节
-
八个比特的一组(两个四位值)。一个字节包含 \(2^8 = 256\) 种可能的值,用恰好两个十六进制数字表示,例如
11111111=FF= 255。 - 基数/进制
- 位置计数制使用的不同数字符号的个数,也是位置值之间的乘数。二进制是2进制,十进制是10进制,十六进制是16进制。在 \(b\) 进制中,位置 \(i\)(从右侧的0开始计算)处的数字具有权值 \(b^{i}\)。
- 二进制(2进制)
- 仅使用数字0和1的计数制,其中每个位置的值是2的幂。它反映了数字电子的开/关状态,使其成为计算机的原生语言。
- 十进制(10进制)
- 使用数字0到9的日常计数制,其中每个位置的值是10的幂。在比较二进制和十六进制值时,它充当通用参考点。
- 十六进制(16进制)
- 使用16个数字的计数制:0–9后跟A–F(其中A=10、B=11、C=12、D=13、E=14、F=15)。它的紧凑性——每个四位值一个十六进制数字——使得长二进制字符串对人类来说更容易读写。
- 最高有效位/最低有效位
- 最高有效位是最左边的比特,具有最大的位置值(最高的2的幂)。最低有效位是最右边的比特,具有最小的值(\(2^0 = 1\))。同样的"最高/最低有效"概念也适用于十六进制中的整个数字。
- 0x前缀
-
一个常规标记,写在数字前面,表示该值用十六进制表示——例如
0xD6表示十六进制值D6(十进制214),而不是某种其他进制中的"D6"数字。它广泛用于编程语言,如C、Java和Python。二进制通常类似地用0b前缀表示。
常见问题
如果位数不能被 4 整除怎么办?转换器会自动在左侧补 0,因此 1010110 会变成 0101 0110 = 56。
能处理前导 0 吗?可以——最终的十六进制输出会去掉前导 0,但这并不会改变数值大小。
结果是大写的吗?按照惯例,十六进制数字 A-F 会以大写形式显示,并加上 0x 前缀以便区分。