双向进制转换器 - 十进制、Hex、Base32、Base64
在十进制与 Base16(十六进制)、Base32、Base64 之间进行双向数字转换,并自动检测已编码值所属的进制。输入十进制数字即可同时得到 Base16、Base32 和 Base64 三种编码结果,也可粘贴已编码的值一键解码还原为十进制数字,适合开发者处理颜色代码、哈希值、Base64 数据等常见场景。
双向进制转换器
在十进制数字和标准进制编码(Base16/十六进制、Base32、Base64)之间进行转换。在任一字段中输入值即可转换。
输入一个正整数(最大值:9,007,199,254,740,991)
输入Base16、Base32或Base64编码值
关于进制编码
文档
双向进制转换器:十进制 ↔ Base16、Base32、Base64
进制转换器将一个数字从一种书写方式转换为另一种书写方式。计算机、URL 和数据格式很少直接存储纯十进制数字——它们通常会将其打包为更紧凑或更适合传输的编码方式,例如 Base16(十六进制)、Base32 或 Base64。本工具可实现双向转换:输入一个十进制数字,即可看到它对应的 Base16/Base32/Base64 形式;或者粘贴一个已编码的值,获取其十进制数字。它还能自动检测已编码值所使用的进制。
“进制”的含义
每一种位值计数系统都有一个进制(或称基数,radix)——即用于表示单个数位所使用的不同符号的数量。十进制的基数是 10(符号为 0-9)。本文所述的编码方式则用更大的符号集换取更短的字符串:
- Base16(十六进制)——符号为
0-9和A-F。每个字符表示 4 位(bit)。广泛用于颜色代码(#FF0000)、内存地址和哈希值。 - Base32——符号为
A-Z和2-7(RFC 4648)。每个字符表示 5 位(bit)。不区分大小写,且不含容易混淆的字符,因此适合口述或手动输入。 - Base64——符号为
A-Z、a-z、0-9、+和/(RFC 4648)。每个字符表示 6 位(bit)。是通过电子邮件或 JSON 字段等纯文本通道传输二进制数据的标准方式。
进制越高,表示同一个数字所需的字符就越少——但需要区分的符号集也就越大。
如何使用该转换器
该工具提供两个输入框,无论你在哪一个中输入,它都能正常工作:
- 十进制 → 编码值。 在十进制输入框中输入一个正整数,工具会同时显示其 Base16、Base32 和 Base64 形式。
- 编码值 → 十进制。 在编码值输入框中粘贴一个 Base16、Base32 或 Base64 值,工具会自动检测其进制、校验字符是否合法,并返回对应的十进制数字。
取值范围与校验
数值范围受限于 JavaScript 的最大安全整数 9007199254740991(即 2^53 − 1)。超过这个范围后,整数将无法被精确表示,若转换器继续计算,会在不知不觉中返回错误的数字——因此本工具会报告“超出范围”的错误,而不是给出猜测结果。十进制输入必须为非负整数;编码值输入则必须只包含其对应进制的合法字符,否则工具会予以提示,而不是解码出乱码。
示例演算
- 十进制 255。 Base16 =
FF,因为 255 = 15×16 + 15,两个数位都是F。这也是#FFFFFF表示白色的原因:三个字节均取到最大值。 - 十进制 1000。 Base16 =
3E8(3×256 + 14×16 + 8 = 1000)。 - 解码
FF。 系统检测为 Base16,解码结果为 255。 - 一个字节取最大值时为 8 位,用十六进制表示即为
FF——每 4 位对应一个十六进制字符,因此一个字节需要两个字符。同一个字节若用 Base32 表示则需要更长的字符串,用 Base64 表示还需要填充,这也是为什么在颜色、地址等短数值场景中,十六进制始终是最易读的选择。
各编码方式的应用场景
- Base16——CSS/HTML 颜色、MAC 和 IPv6 地址、加密哈希值和校验和、二进制文件的十六进制转储。
- Base32——TOTP/2FA 密钥、部分文件共享和基于 DNS 的系统,以及需要避免大小写和字符混淆的手动输入或口述标识符。
- Base64——
data:URI、电子邮件附件(MIME)、在 JSON 或 XML 中嵌入图片或证书、JWT 令牌。
由于每种编码方式只是同一个数字的不同表示形式,在它们之间转换永远不会改变数值本身——改变的只是书写所需的字符数量,以及它能够安全通过哪些传输通道。