RGB 到十六进制转换:精确映射颜色值
输入三个 0–255 之间的数字(例如 79, 70, 229),工具立即输出对应的六位十六进制颜色码(如 #4F46E5),同时显示色块并更新 HSL、HSV、CMYK、LAB 及其他格式字段。所有处理都在浏览器本地完成,不上传任何数据。与许多其他转换工具不同,本页不会将 RGB 值近似到其他色彩空间——RGB 和十六进制都使用 sRGB 标准,转换是精确且可逆的。十六进制输出始终以 # 开头,长度固定为六位(不自动折叠为三位简写),也不包含 Alpha 通道(除非用户主动输入八位格式)。当您直接修改任一格式字段时,所有字段会同步更新,无需点击“转换”按钮。
RGB 颜色模型与 0–255 刻度
RGB 是加法颜色模型,通过红、绿、蓝三种色光的强度叠加产生颜色。每个通道的强度用一个十进制数表示,范围从 0(完全关闭)到 255(最大亮度)。0–255 这个范围并非随意选择——它对应 8 位二进制(2^8 = 256 个值),这是最早期计算机显示硬件采用的标准,至今仍是 sRGB 色彩空间的核心定义。例如,纯红色是 (255, 0, 0),纯白色是 (255, 255, 255),黑色是 (0, 0, 0)。您输入的每个值都直接映射到显示子像素的亮度等级,因此 RGB 与最终屏幕颜色之间存在线性对应关系。
注意:某些软件(如 Photoshop)允许输入 0–100% 的百分比 RGB,但本工具要求 0–255 的绝对数值。若您输入超出此范围的值或格式错误(例如缺少逗号),工具会显示提示:“Enter RGB as three numbers 0–255, like 79, 70, 229.” 这是因为转换算法直接基于整数计算,无法处理非标准输入。
十六进制颜色码的结构
十六进制颜色码以 # 开头,后跟六位十六进制数字(0–9 和 A–F)。#RRGGBB 格式中,前两位代表红色,中间两位代表绿色,后两位代表蓝色。大小写不敏感——#1E90FF 和 #1e90ff 是同一个颜色。六位十六进制是网络上最通用的颜色表示法,广泛用于 CSS、SVG 和设计软件。
本工具输出固定为六位,不会将 #AABBCC 简化为 #ABC(三位简写)。但工具的十六进制输入字段接受三位简写(如 #abc),并在内部将其扩展为六位(#aabbcc)。三位简写的原理是重复每一位:#F80 相当于 #FF8800。这种做法在旧版 CSS 中常用,但现代开发更推荐使用完整的六位形式以避免歧义。
另外存在八位十六进制(#RRGGBBAA),其中 AA 是 Alpha 透明度通道。本工具不自动产生八位输出,因为 RGB 输入本身不包含透明度信息。如果您在十六进制输入框输入了八位代码,工具会保留 Alpha 值并在其他格式中尝试解析(但 RGB 字段仍只显示颜色值,不显示透明度)。
转换原理:十进制到十六进制的数学
每个 0–255 的十进制值转换为两位十六进制数的过程是固定的:
- 将数值除以 16,得到商和余数(商范围 0–15,余数范围 0–15)。
- 商对应十六进制的高位,余数对应低位。
- 将 0–15 映射为 0–9、A–F:0→0, 1→1,... 9→9, 10→A, 11→B, 12→C, 13→D, 14→E, 15→F。
举例:红色值 79。79 ÷ 16 = 4 余 15。商 4 对应十六进制 4,余数 15 对应 F,因此红色通道的十六进制为 4F。同样,绿色 70:70 ÷ 16 = 4 余 6 → 46。蓝色 229:229 ÷ 16 = 14 余 5 → E5。组合得到 #4F46E5。
由于 RGB 和十六进制共享相同的 sRGB 量化空间,这种转换是双向无损的:给定任意六位十六进制,可以通过反向运算(高位×16 + 低位)精确还原原始 RGB 整数。这也是为什么本工具不需要任何近似或下采样。
输入规则与实时同步
工具接受三种常见的 RGB 输入格式:
- 逗号分隔:
79, 70, 229 - 空格分隔:
79 70 229 - 混合使用逗号和空格:
79,70 229
输入框不会自动填充 0 前缀或补零。例如,红色值 0 应该输入 0,而不是 00。每个通道可以单独输入,工具会立即解析并更新所有字段。
编辑任意一个格式字段(如 HSL 或 CMYK)时,工具会自动反向计算并更新 RGB 输入框。这意味着您可以从任何支持的格式出发,获得对应的 RGB 和十六进制值。由于所有转换基于相同的 sRGB 工作空间,且不存在色域裁剪(RGB 和十六进制覆盖完全相同的色域),所以不会出现“无法转换”的情况——只要输入格式正确,输出总是确定的。
特别提醒:CMYK 转换存在近似(因为 CMYK 是减法色域,通常小于 sRGB),但本工具使用标准转换公式,结果仍可视为合理近似。如果您从 CMYK 反向推导 RGB,可能会遇到数值四舍五入导致的微小差异。
哪些人需要这个工具
- 前端开发者在 CSS 中需要使用
color或background-color属性时,经常面对来自设计稿的 RGB 值。本工具将 RGB 数字直接转换为十六进制字符串,可以直接粘贴到代码中。 - UI/UX 设计师从 Photoshop、Figma 或 Sketch 中提取 RGB 值后,需要与开发同事协作。十六进制是设计交付中最通用的颜色格式,可避免因解析问题导致的色差。
- 图形设计人员处理网页素材时,必须确保颜色在不同软件间一致。由于 sRGB 是显示标准,RGB 与十六进制的转换不存在色差,您可以放心使用。
- 学习数字颜色的学生通过手动计算或观察本工具的输出,可以直观理解十进制与十六进制之间的映射关系,巩固对位深度和颜色编码的理解。
- 使用颜色取色器(如浏览器 DevTools 或第三方工具)获取 RGB 值后,需要快速得到对应的十六进制代码以用于样式表。
常见错误与注意事项
| 错误类型 | 表现 | 正确做法 |
|---|---|---|
| 输入范围超出 0–255 | 工具显示错误提示 | 检查每个值是否在 0–255 之间 |
| 使用百分比(如 50%) | 工具无法解析 | 用 0–255 整数值,50% 约为 128 |
| 输入四位或五位十六进制 | 自动补齐或报错 | 始终使用六位(或三位简写) |
| 忘了加 # 号 | 十六进制字段可自动添加,但 RGB 输入无关 | 手动输入时确保以 # 开头 |
| 输入带透明度的 RGBA | 工具忽略 Alpha 值 | 分别记录颜色 Alpha 值,另用 CSS rgba() 和 #RRGGBBAA |
请记住:本工具不存储任何数据,也不与服务器通信。所有计算在您的浏览器中执行,适合用于敏感项目中的颜色转换。
FAQ
1. 为什么十六进制输出总是六位,而不是三位简写?
因为三位简写本质上是六位的重复压缩,例如 #abc 实际对应 #aabbcc。本工具展示完整形式以避免歧义,同时输入字段接受三位简写并自动扩展。如需使用三位简写,请在 CSS 中自行缩写(例如 #F80 代表 #FF8800),但请注意某些场景下三位简写可能导致解析错误(如旧版浏览器或 SVG)。
2. 输入 RGB 后看到十六进制是 #4F46E5,但我想知道它的透明版本怎么办?
本工具不输出八位十六进制,因为 RGB 输入不含透明度信息。您可以在十六进制字段后面手动加上两位透明度值(00–FF),例如 #4F46E580 表示 50% 透明度(0x80 ≈ 128)。对于 CSS 的最新标准,直接使用 rgba(79, 70, 229, 0.5) 更直观。
3. 我输入了 79, 70, 229,却看到错误提示“Enter RGB as three numbers 0–255”,怎么回事?
请检查是否有多余空格或非数字字符。正确格式示例:79, 70, 229(逗号后加空格是可选的)或 79 70 229。另外,确保没有包含括号或 rgb() 函数。本工具期望纯粹的三个十进制数,不接受 rgb(79, 70, 229) 这种带函数名的输入。
4. 转换成十六进制后,我能否直接复制给 CSS 的 background-color?
完全可以。CSS 支持六位十六进制值,例如 background-color: #4F46E5;。注意 CSS 中的十六进制值不区分大小写,但推荐使用小写以保持代码一致性。如果设计稿中提供的 RGB 值来自 sRGB 空间(绝大多数屏幕都是),转换结果与原始 RGB 完全一致。
5. 为什么 CMYK 和 LAB 转换与我的打印输出颜色不同? CMYK 和 LAB 是设备相关或设备无关的色空间,本工具使用标准 ICC 转换公式,但真实的打印输出取决于墨水、纸张和打印机配置文件。RGB 转 CMYK 总是存在色差(因为 sRGB 色域大于 CMYK),本工具的 CMYK 值仅作为参考,不保证与特定打印设备完全匹配。请依赖专业的色彩管理软件做最终输出。
6. 我可以在本地离线使用这个工具吗?
可以。这一页面是静态的,所有 JavaScript 代码都在您的浏览器中执行,无需网络连接。您可以将整个页面保存为 .html 文件,在无网络环境下使用。工具不依赖任何外部 API 或 CDN。