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

🏷️ beat365体育亚洲网址 🕒 2026-11-06 12:19:50 👤 admin 👁️ 6016 ❤️ 687
十六进制转二进制:完整指南(含对照表与示例)

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

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

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

什么是十六进制?

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

0-9 表示零到九

A-F(或 a-f)表示十到十五

十六进制数码十进制值00112233445566778899A10B11C12D13E14F15

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

计算机以二进制工作,但二进制字符串对人类来说既长又容易出错。十进制虽然对人类友好,却与二进制对齐不整。十六进制兼具两者之长:每个十六进制数码恰好对应 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)数制,只使用两个符号:0 和 1。它是所有数字计算机的基础语言,因为电子电路最可靠的设计方式就是基于两态(开/关)逻辑。

位、半字节与字节

位(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 个二进制位。这不是近似或捷径——这是精确的数学对应关系。完整映射如下:

十六进制二进制十六进制二进制0000081000100019100120010A101030011B101140100C110050101D110160110E111070111F1111

第一步:写下十六进制数

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

0x(C、Java、Python、JavaScript):0xFF 变为 FF

#(CSS 颜色代码):#3A7BD5 变为 3A7BD5

$(6502 汇编):$FF 变为 FF

h 后缀(Intel 汇编):FFh 变为 FF

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

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

第三步:合并所有分组

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

十六进制转二进制对照表

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

十六进制十进制二进制000000110001220010330011440100550101660110770111881000991001A101010B111011C121100D131101E141110F151111

多位数值扩展示例

十六进制十进制二进制0000000 00000F150000 111110160001 00007F1270111 1111801281000 0000FF2551111 11111002560001 0000 0000FFFF655351111 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

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

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

1 = 0001

A = 1010

3 = 0011

F = 1111

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

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

二进制转回十六进制

反向转换同样简单:

从右到左分成 4 位半字节。 从最低有效位(最右侧)开始,每四位为一组。

如有需要,用前导零补齐。 若最左侧分组不足 4 位,在左侧补零。

将每个 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

#include

// 打印二进制表示

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 位分组可视化展示。

相关文章

淘宝自动回复在哪里设置?如何操作?
beat365体育亚洲网址

淘宝自动回复在哪里设置?如何操作?

📅 08-28 👁️ 8157
faceu软件怎么打开?(faceu软件打开方法)
beat365体育亚洲网址

faceu软件怎么打开?(faceu软件打开方法)

📅 07-12 👁️ 6836
如何祛痰湿最有效
365bet体育在线网址

如何祛痰湿最有效

📅 07-30 👁️ 8089