使用方法
- 在「十六进制颜色」填色值(默认 #ff5733,可带或不带 #、大小写随意、支持 #f00 简写)。
- 在「RGB 颜色」填分量(默认 255,87,51,支持 r,g,b 或 r,g,b,a),可做反向转换。
- 选「含 alpha 处理」:开时支持 #RRGGBBAA 与 rgba;关时只取前六位 RGB。
- 点「转换」或裸按 Enter,结果区显示三通道分量、十六进制、rgba 与实时色块。
- 点「复制结果」把 rgb 字符串存到剪贴板;「导出颜色表 CSV」把 14 行常见颜色下载成带 BOM 的表格。
- 结果区还会实时显示一个色块,方便你直观确认颜色是否正确,不必只凭数字去想象;改任意一边输入框,色块与另一侧都会同步更新。
这个十六进制转RGB工具能解决什么问题
一是统一两种颜色写法。设计稿常用 #ff5733,CSS 里有时要 rgb(255,87,51),Android、iOS 又各自一套。十六进制转RGB工具在两种写法间无损互转,复制粘贴即用,不必再心算 0xff 等于几。调接口或写主题配置时,前后端常常各用一种记法,本工具能省去反复打开取色器的麻烦,把核对成本降到一次粘贴。
二是把简写和大小写都吃掉。#f00 是 #ff0000 的缩写、#F00 也是、ff0000 没 # 还是它。人工核对容易看花眼,本工具一律归一展开,输入哪种都得到同一组分量。
三是把 alpha 通道也管上。半透明色写成 #RRGGBBAA(后两位是透明度),CSS 对应 rgba(r,g,b,a)。开「含 alpha」后,八位十六进制能完整往返,关掉则只看 RGB,避免你把透明度误当颜色。
本页十六进制转RGB工具不做这些事:不把颜色转成 HSL/HSV(那是另一类工具);不取色(需要屏幕吸管);也不预测配色是否好看。它只负责 # 与 rgb 两种记法之间的精确换算。
转换原理:简写展开、每通道两位,以及 alpha 怎么来
三位简写每位重复一次。#f00 不是「每位乘 15」,而是 f→ff、0→00、0→00,展开成 #ff0000。同理 #abc → #aabbcc。这是 CSS 规范定义的缩写规则,本工具严格照此展开,不会算成别的。
每通道两位十六进制,范围 0~255。十六进制的 00 是十进制 0、ff 是 255,正好对应一个颜色通道的 256 级。解析时把两位十六进制用 parseInt(pair, 16) 转成十进制:ff→255、57→87、33→51,于是 #ff5733 = rgb(255,87,51)。
大小写与 # 前缀都容错。正则先去掉开头的 #、整体转小写,再判断长度是 3/4/6/8。所以 FF5733、#ff5733、ff5733 都归一为同一串,之后按长度分流到简写或六位逻辑。
八位十六进制末两位是 alpha。#RRGGBBAA 里 AA 是透明度,转成 rgba 的 a 要除以 255:AA(170) → 170/255 ≈ 0.667。反向从 rgba(…,a) 回十六进制时,a×255 四舍五入再转两位十六进制。关掉「含 alpha」时,八位只取前六位,alpha 被丢弃。
反向从 RGB 回十六进制。每个分量用 toString(16) 转十六进制,不足两位前补 0:255→ff、87→57、51→33,拼成 ff5733 再补上 #。这一路径同样支持 alpha,保证 rgb→hex→rgb 往返一致。
为什么是六位而不是别的长度。十六进制逢 16 进位:0-9 之后接 a(10)、b(11)、c(12)、d(13)、e(14)、f(15)。两位一组表示 16×16=256 个值,正好覆盖一个 8 位颜色通道的全部强度等级;三个通道共六位,能精确描述约 1677 万种颜色。这也是屏幕、浏览器与图像格式通用的颜色深度,所以六位十六进制几乎与「一个颜色」画等号。
完整示例(默认输入实测)
默认输入 #ff5733,逐项核对:
- 去 #、转小写:ff5733,长度 6,按六位处理;
- 分三组:ff / 57 / 33,分别
parseInt(_,16)得 255 / 87 / 51; - 输出 rgb(255, 87, 51),色块实时显示 #ff5733;
- 含 alpha 时视为 #ff5733ff,末两位 ff=255 → rgba(255,87,51,1);
- 反向:在 RGB 框填 255,87,51,回推出 #ff5733,与左侧一致。
简写验证:在十六进制框填 #f00,展开为 #ff0000,输出 rgb(255,0,0),色块纯红——和对照表里「红色」那行吻合。
输入范围与对照表
- 十六进制:3 / 4 / 6 / 8 位,可带 # 或不带,大小写不限;其他长度(如 5 位)会被拒绝并指出具体原因。
- RGB 分量:每个 0~255 的整数;超出范围、非数字、分量数不是 3 或 4 都会得到具体提示,不会静默归零。
- alpha 选项:开时支持 #RRGGBBAA 与 rgba,关时八位十六进制只取前六位,alpha 丢弃。
- 颜色对照表:14 种常见颜色的十六进制与 RGB 对应,前 12 行直接显示,后 2 行点「加载更多」展开,可导出 CSV 或复制 TSV。
对照表是「参考样例」而非「转换结果」,所以它与上方结果区是两个独立信息源:结果区告诉你这段具体是什么色,对照表帮你快速查常用色。
边界与精度说明
- 十六进制是精确整数换算,不丢精度。每个通道 00~ff 对 0~255 是一一映射,parseInt 与 toString(16) 互为逆运算,rgb→hex→rgb 往返完全一致,没有浮点误差。
- alpha 是 0~1 的小数,有舍入。从 #RRGGBBAA 的 AA 算 a = AA/255,除不尽时保留三位(如 0.667);反向 a×255 再四舍五入也可能差 1,属预期。
- 简写只能三位或四位。#ab 这类两位不是合法缩写,本工具会报错而非猜测;六位、八位则逐位解析,不做任何重复展开。
- 非法字符立刻拦下。十六进制里出现 g、z 等非 0-9a-f 字符,或 RGB 分量填负数、小数,都会得到具体 fail 文案,不会输出错误颜色。
- 数值只在本地计算。整条链路只有字符串清洗、parseInt 与 toString(16),全部在当前页面执行,没有任何网络请求,也不写 Cookie 或 localStorage。
关于 CSS 的百分比写法。CSS 还允许 rgb(100%,34%,20%) 这种百分比记法,本工具只输出 0~255 的整数形式。若你的环境要求百分比,把每个分量除以 255 再乘 100 即可自行换算(如 87÷255≈34%),换算逻辑等价,只是表达不同。现代浏览器也支持带有透明度的 rgb(255 87 51 / 0.5) 空格写法,本工具则统一用逗号分隔并显式给出 alpha,便于复制粘贴。
常见问题
#f00 为什么等于 #ff0000 而不是别的?
CSS 缩写规则是「每位重复一次」,不是乘 15:f→ff、0→00、0→00,于是 #f00 展开为 #ff0000(纯红)。同理 #abc → #aabbcc。本工具严格照此展开,所以你看到的红色和对照表一致。
大写 #FF5733 和小写 #ff5733 结果一样吗?
一样。本工具在解析前先去掉 # 并把整个串转成小写,再按长度分流。所以 FF5733、#ff5733、ff5733 都归一为同一组分量 rgb(255,87,51),大小写与有没有 # 都不影响结果。
八位 #RRGGBBAA 的 AA 是什么?
末两位 AA 是透明度(alpha),对应 CSS 的 rgba(r,g,b,a) 里那个 0~1 的 a。换算公式是 a = AA/255:AA 为 ff(255) 时 a=1(不透明),为 80(128) 时 a≈0.502(半透明)。关掉「含 alpha」后八位只取前六位,透明度被丢弃。
为什么填 5 位十六进制报错?
因为合法长度只有 3(简写)、4(简写+alpha)、6(标准)、8(标准+alpha)。5 位既不是有效缩写也不是有效全写,本工具会直接拒绝并指出长度不对,而不会擅自猜测你的意图,避免给出错误颜色。
RGB 填小数或 300 会怎样?
都会被拒绝。每个分量必须是 0~255 的整数:填 300 超出上限、填 12.5 不是整数、填 abc 不是数字,都会得到具体提示。本工具不静默截断,避免你以为拿到了正确颜色其实被改过。
rgb 转回十六进制会丢精度吗?
不会。每个分量是 0~255 整数,toString(16) 得到两位十六进制,不足补 0,这与 parseInt(...,16) 互为逆运算,往返完全一致。唯一可能偏差只在 alpha 的小数舍入上,RGB 三通道是精确的。
这个工具能转 HSL 吗?
本页只做 # 与 rgb 两种记法的互转,不处理 HSL/HSV。若你需要色相、饱和度那套表达,请使用专门的 HSL 转换工具。混用会破坏「精确往返」这一前提。
转换结果会被上传吗?
不会。所有清洗、解析与拼接都在你当前浏览器里完成,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里转换几次,面板始终是空的。