十六进制转换完全指南:Hex、十进制、Base64 与颜色值怎么互通
日志里看到 0xFF、设计稿给 #1E40AF、接口又要一串 Base64 或十进制端口号时,第一反应往往是「先转成十六进制看看」。本指南分清 Hex 与十进制、Base64、颜色记法各自解决什么问题,对着 WebUtils 进制转换器与相关工具走可复现步骤,并给出原创错误表与真实联调场景,避免把 Hex 当成加密,或把颜色、字节串、整数三种「看起来都像 hex」的东西混为一谈。
核心一句话
十六进制是同一组整数(或字节)的记法,不是加密;和 Base64、颜色 token 可以互通,但各自服务不同通道。
要算「这个数用十六进制怎么写、这个 hex 等于多少十进制」,用 万能进制转换器。要看文件或文本的原始字节布局,用 Hex 查看器。要把任意字节塞进只认文本的字段,用 Base64。颜色 #RRGGBB 的互转则优先 颜色转换器。下面按「概念边界 → 输入约定 → 操作步骤 → 错误表 → 场景 → 选型 → FAQ」展开。
Hex 到底表示什么
十六进制(Hexadecimal,常写 base 16)用 0-9 与 A-F(大小写通常等价)表示数值。每一位 hex 对应 4 个二进制位,因此:
- 1 个字节(8 bit)= 2 个 hex 字符,例如十进制
255→FF - 2 个字节 = 4 个 hex 字符,例如
65535→FFFF - 颜色 24 bit 常用 6 个 hex 字符:
#RRGGBB
它解决的是 人类可读的紧凑记法:比二进制短,比十进制更贴近字节边界。它 不 改变数值本身,也 不 提供保密性——任何人都能把 FF 还原成 255。
和十进制、二进制的关系
| 进制 | 基数 | 常见写法 | 直觉 |
|---|---|---|---|
| 二进制 | 2 | 0b1101 / 1101 |
电路与位运算 |
| 八进制 | 8 | 0755(Unix 权限语境) |
每 3 位二进制一捆 |
| 十进制 | 10 | 255 |
人类日常计数 |
| 十六进制 | 16 | 0xFF / FF |
每 4 位二进制一捆、字节友好 |
本站转换器在输入侧让你选「原始进制」,输出侧固定给出二/八/十/十六四套结果,并可用自定义 2–36 进制;实现走 BigInt,大整数不会像 Number 那样在超过约 2^53-1 后丢精度。
和 Base64 的区别(极易混)
| 维度 | Hex | Base64 |
|---|---|---|
| 字母表 | 16 个符号 | 64 个符号(+填充 =) |
| 典型膨胀 | 1 字节 → 2 字符(约 100% 文本膨胀) | 3 字节 → 4 字符(约 33% 膨胀) |
| 主要用途 | 调试 dump、颜色、哈希摘要展示 | 文本通道运载二进制 |
| 是否加密 | 否 | 否 |
| 是否可逆 | 是 | 是 |
同一份字节 可以既写成 hex 又写成 Base64,但字符串完全不同。例如字节 0x48 0x69(ASCII Hi)的 hex 是 4869,标准 Base64 则是 SGk=。把 Base64 串当 hex 去「转十进制」一定会失败或得到无意义结果——因为字母表与分组规则不同。
和「颜色 HEX」的关系
CSS 里的 #1E40AF 看起来 是十六进制,语义却是 三个 0–255 通道拼成的 24 位颜色 token,不是「随便一个大整数」。你当然可以把 1E40AF 当成整数 1989935 去进制转换,但工程上更常见的需求是:
#1E40AF↔rgb(30, 64, 175)↔hsl(...)(颜色语义)- 或把某个 整数常量(端口、权限掩码、枚举)在十进制与 hex 之间互看(数值语义)
颜色语义请走颜色转换器;纯数值语义才走进制转换器。混用会导致「颜色对了但业务数字错了」这类难查问题。
输入输出约定(写进联调文档的那种)
在 WebUtils 万能进制转换器上,约定可以概括为:
- 输入框:填「该进制下的数字字面量」,不要夹带
0x、0b、空格、换行、逗号(十进制路径会剥逗号,其它进制以字母表为准)。 - 原始进制下拉:二、八、十、十六、32、36;另有自定义 2–36。
- 结果网格:实时给出二/八/十/十六;卡片可点击复制。
- 字母大小写:解析时按大写字母表处理;输出 hex 为大写。
- 非法数字:某位字符的值 ≥ 当前进制 → 页面提示「无效的输入格式」。
- 大数:
BigInt路径,适合长 ID、大掩码;仍是 非负整数 语义,不是浮点、不是补码展示器。
合法 / 非法示例(数值路径)
| 输入 | 选中进制 | 期望 | 说明 |
|---|---|---|---|
255 |
十进制 | hex FF |
默认演示值 |
FF |
十六进制 | 十进制 255 |
大小写均可 |
ff |
十六进制 | 十进制 255 |
内部转大写 |
0xFF |
十六进制 | 失败或非法 | 含 x,不在 0-9A-F |
1101 |
二进制 | 十进制 13 |
勿当十进制读 |
755 |
八进制 | 十进制 493 |
Unix 权限常这样写 |
G |
十六进制 | 非法 | G 只在 base>16 才合法 |
ZZ |
三十六进制 | 很大整数 | Base36 短 ID 场景 |
字节串 vs 整数:两个不同问题
- 整数:
255↔FF—— 进制转换器的主战场。 - 字节串 / 文件内容:一长串
48 65 6C 6C 6F或文件魔数 —— 这是 按字节展开的 hex dump,应用 Hex 查看器看偏移与 ASCII 对照,而不是把整串当一个超大整数(除非协议明确说「整段是一个大端整数」)。
把「文件前 16 字节的 hex dump」整段贴进进制转换器,得到的是一个天文数字,对排查魔数几乎没用;应分段看每字节或用查看器。
在 WebUtils 上怎么做
主工具页:万能进制转换器。计算在浏览器本地完成;演示数据可以随便用,生产密钥、真实用户标识不要长期留在公共电脑剪贴板。
A. 十进制 → 十六进制(最常见)
- 打开 /tools/converter/number-base-converter.html。
- 在 输入数值并选择原始进制 中输入例如
255。 - 下拉选 十进制 (Base 10)(默认即是)。
- 下方结果网格中找到 十六进制 (Base 16),应看到
FF。 - 点击该结果卡片,点击复制 徽章会短暂变为「已复制!」。
- 若还要二进制/八进制,同一屏已给出,无需二次转换。
B. 十六进制 → 十进制
- 输入框填
1A或FF(不要带#或0x)。 - 原始进制选 十六进制 (Base 16)。
- 十进制卡片应分别显示
26、255。 - 若提示无效:检查是否混入空格、中文标点、或
G以外的非法字母。
C. 自定义 Base(含 Base36 短 ID)
- 先用十进制或十六进制得到中间值,或直接以目标进制输入。
- 底部 自定义进制 (2-36) 填
36(或12等)。 - 右侧紫色结果为该进制表示;字母用
A-Z表示 10–35。 - 短链、邀请码常看 Base36;不要把它和 Base64 字母表混用。
D. 和 Base64、颜色、Hash 的配合(跨工具)
| 你手头的东西 | 先做什么 | 再用谁 |
|---|---|---|
| 整数常量 / 掩码 / 端口 | 进制互看 | 本页 |
| 小图标要进 JSON | 文件 → Base64 | Base64 |
#RRGGBB 设计 token |
颜色互转 | 颜色转换器 |
| 下载包校验码(64 位 hex) | 算摘要对比 | Hash 生成器 |
| 未知文件头 | 看 dump | Hex 查看器 |
Hex 字符串本身不是 Base64。 若接口要 Base64,应先有原始字节,再编码;不能把 FF 四个字符(若当文本)与「数值 255 的单字节」混为一谈——文本 FF 的 UTF-8 是两个字节 0x46 0x46,与单字节 0xFF 完全不同。
能力边界(对照真实页面)
- 有: 二/八/十/十六实时网格、Base32/36 预设、自定义 2–36、点击复制、BigInt 大数、本地计算。
- 没有: 浮点/小数进制、有符号补码可视化、批量文件 hex dump、一键「Hex 字节串 ↔ Base64」、颜色滑块(请用颜色页)。
- 不替代: 加密、签名、权限控制;哈希请用 Hash 工具,传输编码请用 Base64/URL 编码。
常见错误与对照
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 提示「无效的输入格式」 | 字符不属于当前进制;夹带 0x、#、空格 |
清掉前缀与空白;核对下拉进制 |
以为 1101 是十进制一千一百零一 |
实际选了或按二进制理解 | 看下拉;二进制 1101=十进制 13 |
0xFF 转失败 |
x 非法 |
只保留 FF |
颜色 #1E40AF 当整数转完业务对不上 |
需要的是 RGB 通道,不是单一大整数语义 | 改用颜色转换器 |
| 把 SHA-256 的 64 位 hex 当「可解密密文」 | 哈希不可逆 | 只能对比是否相同,用 Hash 工具重算 |
| Base64 串贴进本页 | 字母表含 + / 或 URL-safe - _ |
用 Base64 工具;本页只认数制字母 |
| 长 hex dump 整段转十进制 | 把字节序列误当一个整数 | 用 Hex 查看器按偏移看 |
| 超过 JS 安全整数的数在别处算错 | 对端用了 Number 而非 BigInt/大数库 |
本页 BigInt 结果以字符串复制,对端也要大数 |
八进制权限 755 被当十进制 |
未选八进制 | 原始进制选 8,得到十进制 493 再按位理解 |
| 复制后对端大小写敏感校验失败 | 有的系统要求小写 hex | 粘贴后统一 toLowerCase,本页默认大写 |
建议排错顺序
- 先问:这是 一个整数、一串字节的 dump,还是 颜色 token?三者工具不同。
- 再问:字母表是 0-9A-F,还是 Base64/Base64URL?
- 再清前缀:
0x、#、空格、引号、换行。 - 最后才怀疑「算法错了」——多数是输入约定不一致。
真实工作场景
1. 权限掩码与特性开关
后端文档写「特性位 0x04 表示导出」,前端日志却打出十进制 4。把 4 以十进制输入转换器,确认十六进制为 4;把 80 十进制转 hex 得 50,避免和「权限 755」八进制语义打架。联调时在表格里同时列十进制与 hex,减少口头「那个 4」的歧义。
2. 设计 token 进代码,但不走错工具
设计稿标注 #0EA5E9。若你的任务是写 CSS,打开颜色转换器得到 rgb(14, 165, 233) 即可。只有当协议规定「颜色以 24 位整数传递」时,才把 0EA5E9 当十六进制整数转十进制 959977——并在文档写明字节序与是否含 Alpha。默认按颜色语义处理,不要默认按大整数。
3. 校验和与哈希展示
软件发布页给出 SHA256: e3b0c44298fc1c14...(示例形状)。这是 哈希的 hex 编码,用途是对比,不是还原文件。用 Hash 生成器对本地文件出码,再人工或脚本对比字符串;进制转换器最多帮你确认「某短前缀当整数是多少」,对完整 64 字符摘要没有业务价值。
4. 抓包里的「既像 hex 又像 Base64」
HTTP 头或 JWT 中段常是 Base64URL。若同事误说「这是 hex」,用字母表快速鉴别:出现 + / 或大量 a-z 混杂且含 - _,优先 Base64 族;若几乎只有 0-9A-F 且长度为偶数,才像 hex 字节串。选错工具会浪费半小时。
5. 短 ID 与 Base36
运营要「比 UUID 短的邀请码」。用转换器把大十进制序列号转到 自定义 36 进制,得到含字母的短串。注意:Base36 不是 加密,可枚举;高安全场景仍要随机与速率限制。也 不是 Base64,字符集与填充规则都不同。
6. 文件魔数一眼看穿
PNG 文件头常见 hex 89 50 4E 47。用 Hex 查看器上传文件,看偏移 0 的十六进制列与 ASCII;不要把 89504E47 整段丢进整数转换器再和十进制「对比官网」——官网若给的是哈希,应对哈希;若给的是魔数说明,应对字节序列。
何时用谁:工具选型
| 任务 | 优先工具 | 不要用它来… |
|---|---|---|
| 整数在 2/8/10/16/36 间互看 | 进制转换器 | 解 Base64、调色、算哈希 |
| 文本/文件 ↔ Base64、Data URI | Base64 | 当加密或当 hex dump |
# / rgb / hsl 互转 |
颜色转换器 | 解析文件字节 |
| 文件/文本字节布局、魔数 | Hex 查看器 | 代替哈希校验 |
| MD5/SHA 指纹 | Hash 生成器 | 「解密」回原文 |
| 查询串安全字符 | URL 编码 | 数制换算 |
决策口诀:数用进制页,色用颜色页,运载用 Base64,指纹用 Hash,布局用 Hex 查看器。
安全与隐私
- Hex / Base64 都可逆,粘贴即等于展示明文形态的另一种写法。
- 不要把会话令牌、身份证号「转成 hex 就安心」;传输靠 TLS,存储靠访问控制与真正加密或哈希(密码场景)。
- WebUtils 相关页强调本地处理,仍建议用完清空输入,避免肩窥与共享屏幕残留。
- 哈希的 hex 展示用于完整性, combatting 篡改要靠安全比对流程,而不是「看起来像乱码」。
常见问题
十六进制和二进制哪个更「底层」?
底层存储仍是比特;二进制最贴近电路,十六进制是每 4 比特的书写习惯。调试协议时写 hex 是为了短,写二进制是为了看清某一 bit。本转换器两者都给,按你要解释的粒度选。
为什么我的 `FF` 和别人的 `ff` 比对失败?
多数解析器大小写不敏感,但有的校验脚本用字符串全等。统一规范(例如文档规定小写)并在复制后处理。WebUtils 进制页输出大写,导出到大小写敏感系统前先转换。
能不能把颜色 `#FFFFFF` 直接当 Base64?
不能。#FFFFFF 是颜色 token;Base64 有自己的字母表与填充。若要把 像素字节 传给接口,应得到原始字节或文件再 Base64,而不是把六位颜色字符拿去当 Base64 载荷。
大整数在 Excel 或某些语言里末尾变成 000 是怎么回事?
浮点或固定宽度整数溢出。本页用 BigInt 按字符串给出精确表示;对端需用大数类型或继续当字符串传,不要先转成 IEEE 754 双精度再转回来。
八进制 `0755` 和十进制 `755` 差在哪?
写权限时 755 常被 解释为八进制 位标志;若按十进制 755 再转二进制,bit 图案与 Unix rwxr-xr-x 不是同一套口算习惯。在转换器里显式选「八进制」输入 755,看十进制与二进制卡片,再和 chmod 语义对照。
哈希结果为什么是很长的 hex?
因为摘要是固定长度的比特串,用 hex 两个字符表示一字节最方便人类与脚本对比。它仍然不是加密,也不是进制转换的输入目标;用 Hash 生成器生成,用字符串比较验证。
自定义 37 进制可以吗?
本页限制 2–36,与常见 0-9A-Z 字母表一致。超出需要自建字母表与库,不属于本工具范围。
和「Hex 查看器」功能重叠吗?
不重叠。进制转换器回答「这个 数 在另一进制怎么写」;Hex 查看器回答「这段 内容 每个字节是什么、旁边 ASCII 是什么」。整数问题用前者,文件/缓冲区问题用后者。
动手前的短清单
- 已分清:整数 / 字节 dump / 颜色 token / Base64 载荷。
- 输入已去掉
0x、#、空格与引号(按你的语义需要)。 - 原始进制下拉与纸面文档一致(尤其是八进制权限)。
- 大数对端使用大数或字符串,而非普通双精度。
- 需要保密的数据未依赖「转 hex」;用完已清空页面。
- 颜色与哈希场景已改走专用工具,而非硬套进制页。
小结
十六进制是开发里最高频的「第二种写法」:它让字节边界可读,却也最容易和 Base64、颜色、哈希展示混称。WebUtils 的 万能进制转换器 负责 整数 在 2–36 进制间的精确互看;字节布局、文本运载、颜色与指纹分别交给 Hex 查看器、Base64、颜色转换与 Hash 工具。先定语义,再选页面,绝大多数「转不过去」的问题会在输入约定那一步消失。