转换器

十六进制转二进制:完整指南(含对照表与示例)

通过完整的 0-F 转换对照表、实战示例、编程代码和常用十六进制值,学习如何将十六进制转换为二进制——每位开发者都应掌握的基础技能。

发布于 2026年3月18日
15 分钟阅读
密码学指南

十六进制转二进制:完整指南(含对照表与示例)

十六进制到二进制的转换是计算领域最基础的技能之一。无论是读取内存转储、检查网络数据包、用颜色代码为网页配色,还是调试底层固件,在十六进制与二进制之间灵活切换的能力都不可或缺。好消息是:这也是最容易掌握的转换之一,因为这两种数制之间存在一种简洁的数学关系。

本指南涵盖十六进制转二进制的所有必备知识。读完之后,你将能够手工完成任意十六进制值到二进制的转换,理解这种转换背后的原理,并用四种编程语言编写实现转换的代码。欢迎使用我们的免费十六进制转二进制工具,边阅读边对下面的示例进行实操验证。

什么是十六进制?

十六进制——常简称为 hex——是一种十六进制(base-16)数制。它使用十六个不同的符号来表示数值:

  • 0-9 表示零到九
  • A-F(或 a-f)表示十到十五
十六进制数码十进制值
00
11
22
33
44
55
66
77
88
99
A10
B11
C12
D13
E14
F15

计算机为什么使用十六进制

计算机以二进制工作,但二进制字符串对人类来说既长又容易出错。十进制虽然对人类友好,却与二进制对齐不整。十六进制兼具两者之长:每个十六进制数码恰好对应 4 个二进制位,是二进制数据的一种紧凑且人类可读的简写形式。

以二进制字节值 11010110 为例。它的十进制是 214,验证时需要心算。而它的十六进制只是 D6——两个字符,对照一张小小的查找表即可逐位核验。

十六进制的常见用途

  • 网页颜色代码#FF5733#3A7BD5#000000
  • 内存地址0x7FFF5FBFF8AC
  • MAC 地址00:1A:2B:3C:4D:5E
  • Unicode 码点U+0041(字母 A)
  • 加密哈希值:SHA-256 生成 64 位十六进制数字
  • 汇编语言:机器码操作数以十六进制书写
  • IPv6 地址2001:0db8:85a3:0000:0000:8a2e:0370:7334

什么是二进制?

二进制是一种二进制(base-2)数制,只使用两个符号:01。它是所有数字计算机的基础语言,因为电子电路最可靠的设计方式就是基于两态(开/关)逻辑。

位、半字节与字节

  • 位(bit) 是单个二进制数字(0 或 1)。
  • 半字节(nibble) 是 4 位。一个半字节可以表示 16 个值(0-15),恰好对应一个十六进制数码。
  • 字节(byte) 是 8 位(2 个半字节)。一个字节可以表示 256 个值(0-255),恰好对应两个十六进制数码(00-FF)。
  • 字(word) 随体系结构而异,通常为 16、32 或 64 位。

半字节是十六进制转二进制转换的关键单元。由于一个十六进制数码等于一个半字节,两种数制之间的转换就是简单的逐位替换。

如何将十六进制转换为二进制

核心规则很简单:将每个十六进制数码替换为其对应的 4 位二进制值

4 位映射规则

由于 16 = 2^4,每个十六进制数码恰好映射到 4 个二进制位。这不是近似或捷径——这是精确的数学对应关系。完整映射如下:

十六进制二进制十六进制二进制
0000081000
1000191001
20010A1010
30011B1011
40100C1100
50101D1101
60110E1110
70111F1111

第一步:写下十六进制数

去掉任何前缀或记号。常见前缀包括:

  • 0x(C、Java、Python、JavaScript):0xFF 变为 FF
  • #(CSS 颜色代码):#3A7BD5 变为 3A7BD5
  • $(6502 汇编):$FF 变为 FF
  • h 后缀(Intel 汇编):FFh 变为 FF

第二步:将每个十六进制数码替换为 4 位二进制

从左到右,使用上方对照表替换每个十六进制数码。始终使用完整的 4 位表示,包括前导零。

第三步:合并所有分组

拼接各 4 位分组,即得到完整的二进制表示。为了便于阅读,可选择在各半字节分组之间添加空格。

十六进制转二进制对照表

以下是单个十六进制数码到二进制转换的权威参考表,同时包含十进制等值:

十六进制十进制二进制
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
A101010
B111011
C121100
D131101
E141110
F151111

多位数值扩展示例

十六进制十进制二进制
0000000 0000
0F150000 1111
10160001 0000
7F1270111 1111
801281000 0000
FF2551111 1111
1002560001 0000 0000
FFFF655351111 1111 1111 1111

对于任意十六进制值,都可以使用我们的十六进制转二进制工具即时验证转换结果。

实战示例

简单:A 转二进制

十六进制输入: A

  • A = 1010

结果: 1010(十进制 10)

这是最基础的转换:单个十六进制数码转换为单个半字节。

中等:2F 转二进制

十六进制输入: 2F

  • 2 = 0010
  • F = 1111

结果: 0010 1111(十进制 47)

每位数码独立转换,再将各半字节拼接在一起。

复杂:DEADBEEF 转二进制

十六进制输入: DEADBEEF

这是一个著名的「hexspeak」值,在软件调试中用作魔术数字。

  • D = 1101
  • E = 1110
  • A = 1010
  • D = 1101
  • B = 1011
  • E = 1110
  • E = 1110
  • F = 1111

结果: 1101 1110 1010 1101 1011 1110 1110 1111

这是 32 位(4 字节),恰好是 32 位整数的完整宽度。DEADBEEF 的十进制值为 3,735,928,559。

颜色代码:#FF5733 转二进制

十六进制输入: FF5733(一种暖橙红色)

  • F = 1111
  • F = 1111
  • 5 = 0101
  • 7 = 0111
  • 3 = 0011
  • 3 = 0011

结果: 1111 1111 0101 0111 0011 0011

这 24 位分解为三个 RGB 字节:

  • 红: 11111111 = 255
  • 绿: 01010111 = 87
  • 蓝: 00110011 = 51

你也可以使用我们的十六进制转 RGB 工具探索十六进制颜色值。

带 0x 前缀:0x1A3F 转二进制

十六进制输入: 0x1A3F(先去掉 0x 前缀)

  • 1 = 0001
  • A = 1010
  • 3 = 0011
  • F = 1111

结果: 0001 1010 0011 1111(十进制 6,719)

0x 前缀只是 C、Java、Python 和 JavaScript 中用于标识十六进制数的记号惯例,不影响转换过程。

二进制转回十六进制

反向转换同样简单:

  1. 从右到左分成 4 位半字节。 从最低有效位(最右侧)开始,每四位为一组。
  2. 如有需要,用前导零补齐。 若最左侧分组不足 4 位,在左侧补零。
  3. 将每个 4 位分组替换为对应的十六进制数码。

实战示例

二进制输入: 110101101

第一步:从右分组:1 1010 1101

第二步:补齐最左侧分组:0001 1010 1101

第三步:转换各分组:

  • 0001 = 1
  • 1010 = A
  • 1101 = D

结果: 1AD(十进制 429)

各编程语言中的十六进制转二进制

Python

Python 的 int() 函数可解析十六进制字符串,bin() 则将其转换为二进制:

# 基本转换
hex_str = "FF"
binary_str = bin(int(hex_str, 16))  # '0b11111111'

# 整洁输出(无前缀,零填充)
clean = format(int(hex_str, 16), '08b')  # '11111111'

# 颜色代码转换
color = "3A7BD5"
bits = format(int(color, 16), '024b')  # '001110100111101111010101'

# 按 4 位分组
grouped = ' '.join(bits[i:i+4] for i in range(0, len(bits), 4))
# '0011 1010 0111 1011 1101 0101'

JavaScript

JavaScript 使用 parseInt() 解析十六进制,使用 .toString(2) 输出二进制:

// 基本转换
const hex = "FF";
const bin = parseInt(hex, 16).toString(2);  // '11111111'

// 零填充到字节边界
const padded = bin.padStart(Math.ceil(bin.length / 8) * 8, '0');
// '11111111'

// 对大于 2^53 的值,使用 BigInt
const bigHex = "DEADBEEF";
const bigBin = BigInt("0x" + bigHex).toString(2);
// '11011110101011011011111011101111'

Java

Java 提供 Integer.parseInt()Integer.toBinaryString()

// 基本转换
String hex = "FF";
int decimal = Integer.parseInt(hex, 16);  // 255
String binary = Integer.toBinaryString(decimal);  // "11111111"

// 零填充
String padded = String.format("%8s", binary).replace(' ', '0');
// "11111111"

// 较大值
long bigDecimal = Long.parseLong("DEADBEEF", 16);
String bigBinary = Long.toBinaryString(bigDecimal);
// "11011110101011011011111011101111"

C/C++

C 和 C++ 使用 strtol() 或直接进行位运算:

#include <stdio.h>
#include <stdlib.h>

// 打印二进制表示
void printBinary(unsigned long n, int bits) {
    for (int i = bits - 1; i >= 0; i--) {
        printf("%d", (n >> i) & 1);
        if (i % 4 == 0 && i > 0) printf(" ");
    }
    printf("\n");
}

int main() {
    unsigned long value = strtoul("FF", NULL, 16);
    printBinary(value, 8);   // 1111 1111

    unsigned long color = strtoul("3A7BD5", NULL, 16);
    printBinary(color, 24);  // 0011 1010 0111 1011 1101 0101

    return 0;
}

每位开发者都应熟记的常用十六进制值

边界值

十六进制二进制十进制含义
0x000000 00000空字节,字节最小值
0x7F0111 1111127有符号 8 位整数最大值
0x801000 0000128有符号 8 位最小值(二进制补码)
0xFF1111 1111255无符号 8 位最大值(1 字节)
0xFFFF1111 1111 1111 111165,535无符号 16 位最大值
0xFFFFFFFF1111 1111 1111 1111 1111 1111 1111 11114,294,967,295无符号 32 位最大值

网页颜色值

十六进制二进制颜色
#0000000000 0000 0000 0000 0000 0000黑色
#FFFFFF1111 1111 1111 1111 1111 1111白色
#FF00001111 1111 0000 0000 0000 0000红色
#00FF000000 0000 1111 1111 0000 0000绿色
#0000FF0000 0000 0000 0000 1111 1111蓝色
#FF57331111 1111 0101 0111 0011 0011橙色
#3A7BD50011 1010 0111 1011 1101 0101蓝色

ASCII 码的十六进制表示

十六进制二进制字符
0x200010 0000空格
0x300011 0000'0'
0x410100 0001'A'
0x610110 0001'a'
0x7E0111 1110'~'

熟记这些值,能显著加快调试、内存检查和底层编程的效率。

常见问题

如何将十六进制转换为二进制?

将每个十六进制数码替换为其对应的 4 位二进制值。映射关系为:0=0000、1=0001、2=0010、……、9=1001、A=1010、B=1011、C=1100、D=1101、E=1110、F=1111。例如,十六进制 2F 变为 0010 1111。这是因为 16 = 2^4,每个十六进制数码恰好代表 4 个二进制位。

0xFF 的二进制是什么?

0xFF 的二进制是 11111111(八个 1)。F 对应二进制 1111,所以 FF 变为 1111 1111。它的十进制等于 255,代表单个无符号字节的最大值。

一个十六进制数码对应几个二进制数字?

恰好 4 个二进制数字(位)。这是因为十六进制(base-16)中 16 = 2^4。一个十六进制数码可以表示 0-15 的值,恰好是 4 位(0000 到 1111)的范围。

DEADBEEF 的二进制是什么?

十六进制 DEADBEEF 转换为二进制是 11011110 10101101 10111110 11101111。它的十进制等于 3,735,928,559。这是一个著名的「hexspeak」魔术数字,常用于调试时填充未初始化的内存。

如何将二进制转回十六进制?

从右到左将二进制数字每四位分为一组,如有需要在最左侧分组补前导零。然后将每个 4 位分组替换为对应的十六进制数码。例如,二进制 10110010 分组为 1011 0010,转换后对应十六进制 B2。

为什么使用十六进制而不是二进制?

十六进制被广泛使用,是因为它比二进制紧凑得多、可读性更强,同时与二进制保持直接的数学对应关系。字节值 11010110 对应的十六进制只是 D6——两个字符代替八个,且无需任何运算即可相互转换。

十六进制与二进制有什么区别?

十六进制(base-16)使用数字 0-9 和字母 A-F,而二进制(base-2)只使用 0 和 1。十六进制是二进制数据的人类友好表示:每个十六进制数码恰好编码 4 个二进制位。计算机内部以二进制运行,但开发者使用十六进制作为便捷的记号形式。

不用计算器也能进行十六进制到二进制的转换吗?

可以。一旦记住 16 个映射关系(0=0000 到 F=1111),你就能在几秒内手工完成任意十六进制数的二进制转换。这种转换对每位数码来说都是简单的一对一替换,无需进位、借位或任何算术运算。

十六进制颜色代码与二进制有什么关系?

像 #FF5733 这样的十六进制颜色代码,本质上是一个 24 位二进制值,分为三个 8 位通道:红色(FF = 11111111 = 255)、绿色(57 = 01010111 = 87)和蓝色(33 = 00110011 = 51)。十六进制记号只是定义颜色的 24 个二进制位的一种紧凑表示方式。

一个字节内最大的十六进制值是什么?

FF(十进制 255,二进制 11111111)。一个字节是 8 位,8 位的最大值为 11111111,对应十六进制中 F(1111)接 F(1111)。这就是为什么字节值的十六进制范围始终是 00 到 FF。

总结

十六进制转二进制是一项建立在一条简单规则之上的基础技能:每个十六进制数码恰好等于 4 个二进制位。无论是转换单个数码 A(1010)、一个字节 FF(11111111),还是复杂的值 DEADBEEF,过程始终是同样的机械替换。

本指南的核心要点:

  • 16 = 2^4,因此一个十六进制数码 = 一个 4 位半字节
  • 记住 0-F 对照表,即可即时完成任意十六进制数的二进制转换
  • 两个十六进制数码 = 一个字节(8 位),使十六进制成为面向字节数据的自然记号形式
  • 各编程语言均提供内置函数:Python 的 bin(int(x, 16))、JavaScript 的 parseInt(x, 16).toString(2)、Java 的 Integer.toBinaryString(Integer.parseInt(x, 16))
  • 反向转换(二进制转十六进制)通过从右侧将位分组为半字节来实现

准备好练习了吗?使用我们的免费十六进制转二进制工具,即时将任意十六进制值转换为二进制,并附有逐步的逐半字节分解和 4 位分组可视化展示。

关于本文

本文是我们综合 转换器 教程系列的一部分。继续了解古典密码学,并探索我们的交互式密码工具。

更多 转换器 教程

试用 转换器 工具

通过我们的交互式转换器工具,将所学知识付诸实践。

试用 转换器 工具