十六进制转二进制转换器

把十六进制字符串逐位展开成完整的 0/1 二进制串:支持 0x 前缀与空格分隔,可选按字节补齐、每 4 位分组,并给出位数、字节数和十进制值;转换在浏览器本地完成,不上传。

—

本页的核心结论:十六进制只是二进制的紧凑记法,1 位十六进制恰好等于 4 位二进制——示例 1A3F 共 4 位十六进制,展开后是 16 位二进制,按字节对齐后正好分成 00011010 与 00111111 两个字节。转换不需要经过十进制,逐位查表拼接即可。

使用方法

  1. 在输入框里输入或粘贴十六进制字符串。支持 0x 或 0X 前缀,空格、逗号、下划线都可以作分隔符,字母大小写混写也行。示例用的是 1A3F。
  2. 勾选「按字节补齐」:当二进制位数不是 8 的整数倍时,在左侧补 0 到整字节。取消勾选则保留原始位数,多出来的半字节不会被补。
  3. 勾选「每 4 位分组」:按半字节(nibble)在每 4 位之间加一个空格,读起来与十六进制逐字对应;取消就是连续的 0/1 串。
  4. 「每行字节数」决定换行宽度,默认 8 字节一行,可填 1 到 32;在字节对齐开启时生效,用来把长串排成整齐的字节矩阵。
  5. 点「开始转换」,或在输入框里按 Ctrl(Mac 为 Cmd)+ Enter。Enter 单独按下是换行,不会触发转换;选项与输入变动时结果会自动刷新。
  6. 输出框内容可直接「复制结果」;下方片段对照表可「加载更多」展开到 27 行,也能「复制对照表」为制表符文本或「导出 CSV」带 BOM 保存。

这个十六进制转二进制转换器能解决什么问题

需要看清「一个数在每一位上到底是 0 还是 1」的时候就要用它。读单片机的寄存器手册,某个控制寄存器常写成 0x1A3F,展开成二进制才能对上每一位的定义;排查通信协议帧,帧头帧尾常用十六进制记,转成二进制才能按位核验标志位;处理权限位掩码(如 Linux 的 rwx 位、Windows 的 ACL 位),十六进制 0x1FF 换成 9 位二进制就知道开了哪几个权限;看内存转储、GUID、颜色值、位图数据时,也都需要把紧凑的十六进制摊开成逐位的二进制。这个工具的定位很明确:只做十六进制转二进制这一个方向。同站还有反方向的二进制转十六进制、以及十进制与十六进制之间的互换工具,它们处理的是别的方向,需要反过来查时请用对应的页面。本页把输入按半字节逐位映射,不做任何数值近似,因此无论多长的串都能完整展开。

计算原理与变量说明

十六进制用 16 个符号表示 0 到 15,而 4 位二进制正好有 2⁴ = 16 种组合,两者一一对应,这就是「1 位十六进制 = 4 位二进制」的由来,这 4 位称为一个半字节(nibble)。完整的映射关系是固定的:0 → 0000、1 → 0001、2 → 0010、3 → 0011、4 → 0100、5 → 0101、6 → 0110、7 → 0111、8 → 1000、9 → 1001、A → 1010、B → 1011、C → 1100、D → 1101、E → 1110、F → 1111。

还需要留意前导零:十六进制的 00FF 与 FF 数值相同,但位模式不同,前者是 16 位、后者是 8 位。本页保留你输入中每一位十六进制,因此前导零不会被吞掉,位宽信息得以保留。

完整示例(数值仅作演示)

以下示例均按「按字节补齐 + 每 4 位分组」的默认设置演示。

以 1A3F 为例说明读法:展开后第一个半字节对应十六进制的 1,即 0001;第二个对应 A,即 1010;第三个对应 3,即 0011;第四个对应 F,即 1111。按字节看,前 8 位 00011010 是十六进制的 1A,后 8 位 00111111 是 3F,两个字节拼回去正好是原串。示例中的十六进制串均为演示数值,不代表任何具体设备的寄存器值。

常见十六进制片段对照表

下表由本页同一套逐位映射算法生成,覆盖 0 到 F 的单半字节、常见的 8 位与 16 位片段,以及 32 位的边界值。表格位于页面上方的工具区,「加载更多」可一次展开全部 27 行,「复制对照表」得到制表符文本,「导出 CSV」会带上 BOM 以便表格软件正确识别中文。

结果边界、舍入与适用说明

常见问题

为什么必须逐位映射,不能先转成十进制再转二进制?

因为 JavaScript 的数字类型只能精确表示到 2⁵³ − 1(约 9 × 10¹⁵),而 16 位十六进制的最大值约 1.8 × 10¹⁹,远超这个上限。先转十进制会丢失末几位,再转二进制就会出错。逐位查表不经过数值,任何长度都能准确展开。

同一个 80000000,为什么有时显示成负数?

32 位模式本身只有 0 和 1,正负取决于如何解释。按无符号看,80000000 等于 2147483648;按有符号 int32 看,最高位为 1 表示负数,值为 −2147483648。这正是 int32 的溢出点,本页在 8 位十六进制输入时会把两种解释都列出来。

1A3F 的字节对齐结果为什么是 00011010 00111111?

1A3F 展开成 16 位二进制是 0001 1010 0011 1111。每个字节是 8 位,从右往左每 8 位切一刀:低 8 位是 0011 1111(即十六进制 3F),高 8 位是 0001 1010(即十六进制 1A)。所以字节对齐后写成 00011010 00111111,两个字节合起来正好还原成 1A3F。

输入里可以有 0x 前缀和空格吗?

可以。0x 或 0X 前缀会被识别并去掉,空格、逗号、下划线都会先被清掉,再按剩下的字符逐位转换。所以 0x1A 3F、1A-3F 写成 1A 3F、或 0x1A_3F 都能得到同一结果。务必只用这些分隔符,出现别的符号会被判为非法字符。

前导零会被自动去掉吗?

不会。本页保留输入中的每一位,因此 00FF 显示为 16 位而不是 8 位,位宽信息不会丢。若只想要数值去掉前导零,可以先用相应工具做数值归一,再回到本页转二进制。

最长能转多长的十六进制?

本页上限是 16 位十六进制,即 64 位二进制、8 字节,覆盖常见的 8、16、32、64 位机器字。更长的位串在多数场景里没有实际意义,也会超出单一机器字的表达范围。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。计算在当前浏览器本地完成,不会上传输入内容。

相关工具