十六进制转换器

输入数值
示例:
2二进制
11111111.01010111111010110100
8八进制
377.25765515602517626145
10十进制
255.3434342
16十六进制
ff.57eb4dc153f2c65b9983

免费在线进制转换器,支持十六进制、十进制、二进制、八进制以及 2-36 进制之间的即时互转。支持小数,采用 Decimal.js 高精度算法,无需注册,浏览器本地运行。

相关推荐

什么是十六进制转换器?

十六进制转换器是一种在不同进位制(基数/进制)之间转换数字的工具。最常见的转换包括十六进制(base-16)、十进制(base-10)、二进制(base-2)和八进制(base-8)之间的互转。不同的进制使用不同的数字符号集来表示同一个数值。

十六进制使用 16 个符号:0-9 表示数值 0 到 9,A-F(或 a-f)表示数值 10 到 15。它在计算机领域被广泛使用,因为一个十六进制位恰好对应 4 个二进制位(半字节),可以紧凑地表示二进制数据。两个十六进制位表示一个字节(00 到 FF = 0 到 255)。

二进制(base-2)只使用 0 和 1,是计算机的基础语言。八进制(base-8)使用数字 0-7,历史上在计算机领域使用较多。十进制(base-10)是人类日常使用的标准数字系统,使用数字 0-9。

本转换器支持从 2 到 36 的所有进制。超过 10 的进制使用字母 a-z 表示 9 以上的数字(例如 36 进制使用 0-9 和 a-z)。同时支持负数和小数,采用高精度算术运算确保准确。

适用场景

  • 将 #FF5733 等十六进制颜色代码转换为 RGB 十进制值,用于网页开发
  • 调试时将内存地址和十六进制转储转换为可读的十进制数值
  • 将网络数据包的二进制数据转换为十六进制或十进制进行协议分析
  • 计算机科学课程中的进制转换学习和练习
  • 将编程日志中的十六进制值转换为十进制或二进制
  • 在 Unix 文件权限的八进制和十进制 chmod 值之间快速转换

使用方法

  1. 在页面顶部的输入框中输入一个数值
  2. 通过下拉选择框选择输入数值的进制(基数),可选择从二进制(2)到三十六进制(36)
  3. 即时查看二进制、八进制、十进制、十六进制等所有进制的转换结果
  4. 点击任意结果卡片可将输入切换到该进制,继续进行转换
  5. 点击结果卡片右上角的复制图标可将对应进制的数值复制到剪贴板
  6. 展开「其他进制(2-36)」可查看 2 到 36 进制的全部转换结果

功能特点

  • 支持 2 到 36 进制之间互转:二进制(2)、八进制(8)、十进制(10)、十六进制(16)等全部覆盖
  • 基于 Decimal.js 高精度计算,整数和小数转换精确无误
  • 输入即转换,实时显示结果,无需点击按钮
  • 每种进制结果都配有一键复制按钮
  • 支持负数和小数转换,小数部分最多保留 20 位
  • 完全在浏览器本地运行,数据不上传服务器,无需注册

进制编码对比:该用哪种?

二进制、八进制、十进制、十六进制以及 Base64 各有适用场景。选错要么占用空间翻倍、要么容易写错、要么 URL 兼容性问题。先看「输出给谁看、放在哪里、需要多紧凑」,再选具体编码。

二进制 vs 八进制 vs 十进制 vs 十六进制:典型应用场景

4 种常用进制在工程中各占一席,按「典型场景 / 紧凑度 / 人类可读 / 注意点」决策比按数字本身更靠谱。

进制典型场景紧凑度人类可读注意点
二进制 (base-2)底层硬件、位掩码、布尔协议、协议字段极低(1 bit / 字符)极差(人眼难识别)几乎从不直接呈现给用户,常在底层被十六进制替代
八进制 (base-8)Unix 文件权限(chmod 755)、历史 PDP-11 汇编较低(3 bit / 字符)中等(短数字易读,长度稍长)现代应用很少用;Python 2 的 `0o755` 在 Python 3 仍可用但已不主流
十进制 (base-10)用户输入输出、业务逻辑、配置参数中(≈3.32 bit / 字符)最佳(人类自然语言)压缩率不如十六进制;调试二进制数据时需先转换
十六进制 (base-16)颜色码、内存地址、字节流、MAC/UUID、字节码高(4 bit / 字符,1 字节 = 2 字符)好(紧凑 + 字节边界对齐)注意大小写一致性(A-F vs a-f)和 0x 前缀歧义

十六进制 vs Base64 编码:该用哪个?

十六进制与 Base64 都是字节的文本表示,但适用场景完全不同。按「目标介质 / 紧凑度 / 人类可读 / URL 兼容」决策能避免大量返工。

维度十六进制Base64
字符集0-9 + A-F(16 个)A-Z + a-z + 0-9 + + / (64 个)
每字节字符数2 字符 / 字节≈1.33 字符 / 字节
紧凑度中等(1 字节 → 2 字符)高(3 字节 → 4 字符)
URL 安全✅ 完全 URL 安全❌ 标准 Base64 含 + 和 /,需用 URL-safe Base64 变体
人类可读好(调试、二进制 dump 友好)差(随机字符,难识别边界)
适合场景颜色码、内存地址、MAC、UUID、调试日志、二进制文件预览数据 URI、邮件附件(MIME)、API token、JWT、嵌入图片到 CSS/HTML
不适合场景URL 参数过长(用 base64url 替代)、数据 URI(体积翻倍)调试日志(看不清字段边界)、颜色码(不能直接给 CSS)

最佳实践

十六进制字母大小写必须统一(A-F vs a-f)

同一个项目内,十六进制字母要么全大写、要么全小写,**绝对不能混用**。C/C++/Go/HTML 颜色码习惯用大写 A-F;JSON、URL、UUID(RFC 4122)、以太坊地址、JavaScript 字符串习惯用小写 a-f。混用大小写不会改变数值,但跨语言解析(如 `int('FF', 16)` vs `int('ff', 16)`)和人类阅读都会踩坑——日志里「FF5733」和「ff5733」人眼难辨,调试时极易误判。

什么是十六进制?

明确标注 0x 前缀或文档化为无符号十进制

JSON、URL 参数、API 字段中的数字默认是十进制。JSON 里的字符串 "100" 是十进制 100,但 "0x100" 才是十六进制 256。**必须**显式标注 0x 前缀(或在字段名中加 `hex` 后缀),否则后端解析时按十进制读取会得到错误结果(100 vs 256 差 2.56 倍)。批量对接多家供应商的 API 时,强烈建议在协议文档里固定:所有 hex 字段一律加 0x 前缀。

为什么十六进制及以上进制使用字母?

字节序(Big/Little-endian)转换时务必显式声明

网络协议、文件格式、硬件寄存器几乎都强制字节序——网络字节序是大端(Big-endian),x86/ARM CPU 默认是小端(Little-endian)。**读取和写入时务必显式指定字节序**,否则同一个 16 进制数字 `0x1234` 在不同字节序下被解释成 `0x1234` 或 `0x3412`,差 4 倍。Python 用 `int.from_bytes(b, 'big')` / `'little'`、Go 用 `binary.BigEndian` / `binary.LittleEndian`、C 用 `htonl/htons/ntohl/ntohs`,切勿凭直觉写。

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

MAC 地址、UUID、哈希值统一使用小写

RFC 4122 明确规定 UUID 必须小写;IEEE 802 MAC 地址标准约定小写;以太坊地址、git commit hash、TLS 指纹、文件 SHA-256 哈希几乎全部默认小写。**批量输出十六进制标识符时统一用小写**,能避免 Linux/Mac/Windows 之间的复制粘贴差异(Windows 剪贴板偶尔会改大小写)。日志系统、CMS、配置中心都按小写做去重和索引,混大小写会被当成两个不同条目。

RFC 4122 - UUID 标准

颜色码转换注意是否含 alpha 通道

CSS 颜色码 `#FF5733` 是 6 位 RGB;`#FF573380` 是 8 位 RGBA(最后两位 80 = alpha 50%);短格式 `#F53` 等价 `#FF5533`。本工具转换时只处理数值部分,**alpha 通道需要单独处理**。批量把设计稿颜色应用到代码时,建议先按长度分组(6 位 vs 8 位),不要把 8 位 RGBA 误认为 6 位 RGB(会丢 alpha 导致透明色变实色)。

RGB/HEX 颜色转换器

IPv6 地址和 MAC 地址转换时不要丢失分隔符

IPv6 地址是 32 位十六进制 + 7 个冒号分组(`2001:0db8:85a3:0000:0000:8a2e:0370:7334`),MAC 地址是 12 位十六进制 + 5 个冒号或连字符(`00:1A:2B:3C:4D:5E`)。**用本工具转换裸十六进制字符串时**:`20010db8...` 转十进制后是巨大数(IPv6 完整地址约 3.4×10³⁸),还原时必须重新按 4/2 位分组加冒号。批量处理 IPv6/MAC 的场景建议用专用工具(`/other/color-convert/` 旁的网络工具),不要直接用本工具做端到端转换。

支持哪些进制之间的转换?

不要把十六进制字符串当作密码或敏感凭据

「32 位十六进制」看起来像高强度密码(`a3f8b9c2d1e0f7a6b5c4d3e2f1a0b9c8`),实际熵值只有 16 字节 = 128 bit,看似不错,但**十六进制表示往往就是密钥/Token 本身**——API Key、JWT secret、对称加密密钥、TOTP secret、加密钱包私钥、HMAC key 全部是十六进制字符串。这些值一旦泄露等于裸奔,**绝不能**贴在工单、Slack、邮件、截图里,更不能用在线工具(哪怕声称本地处理)做转换。本工具是格式转换工具,不适合处理任何带密钥语义的十六进制串。

数据安全吗?会上传到服务器吗?

常见问题

支持哪些进制之间的转换?

本转换器支持从二进制(base-2)到三十六进制(base-36)的所有整数进制。最常用的二进制、八进制、十进制和十六进制以快捷卡片形式展示,展开「其他进制」可查看所有进制的结果。

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

通过下拉框选择十六进制(base-16)作为输入进制,然后输入你的十六进制数值(如 FF、A3、1A2B),十进制结果会实时显示在十进制结果卡片中。例如,十六进制 FF 转换为十进制是 255。

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

确保选择十进制(base-10)作为输入进制,然后输入你的十进制数字(如 255、1024、65535),十六进制结果会实时显示在十六进制卡片中。例如,十进制 255 转换为十六进制是 FF。

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

选择二进制(base-2)作为输入进制,输入二进制字符串(如 11111111),十六进制结果会立即显示。每 4 个二进制位对应 1 个十六进制位,因此 11111111(8位)= FF(十六进制)。

支持小数转换吗?

支持。转换器支持如 3.14 或 FF.8 这样的小数输入。小数部分使用 Decimal.js 高精度算法计算,最多保留 20 位有效数字,避免了标准 JavaScript 浮点数运算常见的精度问题。

支持负数转换吗?

支持。在输入数字前加上负号(-)即可,例如 -255 或 -FF。转换器会在所有进制中正确处理负数。

十六进制和 Base64 编码有什么区别?

十六进制使用 16 个符号(0-9, A-F),每字节产生 2 个字符;Base64 使用 64 个符号(A-Z, a-z, 0-9, +, /),每 3 字节产生约 4 个字符,更紧凑。十六进制常用于调试、颜色码和内存地址;Base64 常用于数据 URI、邮件附件和 API 数据传输。如需 Base64 转换,请使用我们的十六进制转 Base64 工具。

为什么编程中使用十六进制?

十六进制被使用是因为它提供了二进制数据的人类可读表示。1 个十六进制位 = 4 个比特,2 个十六进制位 = 1 个字节。这使得阅读内存地址、颜色码(#FF5733)、MAC 地址、字符编码和二进制文件内容变得容易,无需面对冗长的 0 和 1 字符串。

数据安全吗?会上传到服务器吗?

安全。所有转换完全在浏览器中使用 JavaScript 本地运行,输入的数字不会离开你的设备。没有服务器端处理,没有数据存储,也不会追踪你的输入。页面加载后可离线使用。

什么是「进制」或「基数」?

进制(也称基数)是一个数字系统中使用的不同数字符号的数量。二进制(base-2)使用 2 个数字(0,1);十进制(base-10)使用 10 个数字(0-9);十六进制(base-16)使用 16 个符号(0-9, A-F)。同一个数值在不同进制中表示不同,例如十进制 255 在十六进制中是 FF,在二进制中是 11111111。

为什么十六进制及以上进制使用字母?

当进制超过 10 时,我们需要超过 10 个符号(0-9)。字母 a-z(或 A-Z)被用作额外的数字。在十六进制中,A=10, B=11, C=12, D=13, E=14, F=15。在 36 进制中,使用全部 0-9 数字加上 a-z 字母来表示 0-35 的值。

转换大数会丢失精度吗?

不会。本转换器使用 Decimal.js 进行任意精度的十进制算术运算,避免了标准 JavaScript Number 类型在处理非常大整数时的浮点精度问题。超出 Decimal.js 表示范围的极大数字可能显示为 Infinity,但所有实际编程和学习场景中的数字都能精确处理。

Privacy & Security

所有进制转换完全在浏览器本地运行,输入的数字使用 JavaScript 在本地处理,不会传输到任何服务器。不存储、不记录、不分析任何数据,页面加载后可离线使用。