什么是HEX颜色代码与RGB颜色格式
HEX颜色代码是CSS和其他网页技术中常用的颜色表示法,以十六进制(基数为16)书写,格式为#RRGGBB,其中RR、GG、BB各代表一个8位通道,取值范围00到FF(十进制0–255)。RGB颜色则直接以三个十进制整数表示同一通道值,例如rgb(79, 70, 229)。两者本质上描述的是同一个颜色空间——sRGB(标准RGB),只是数字的进制不同。
本页面专注于将HEX转换为RGB,不接受包含Alpha通道的8位HEX(如#RRGGBBAA),也不涉及CSS中的rgba()函数。转换的核心逻辑是:将每两位十六进制数字按权重求和,得到0–255之间的整数值。
转换原理:十六进制到十进制的数学方法
十六进制数字使用0-9和A-F表示0–15的值。每对十六进制数字(如4f)中,左边是高位,右边是低位。其十进制值计算公式为:高位值 × 16 + 低位值。例如:
4f:4(十进制4)× 16 +f(十进制15)= 64 + 15 = 7946:4× 16 +6= 64 + 6 = 70e5:e(14)× 16 +5= 224 + 5 = 229
所以#4f46e5对应的RGB是(79, 70, 229)。这个过程是确定的,不会产生舍入或裁剪,因为基16到基10的转换是精确的一一映射。对于三字符简写如#abc,先将每个字符重复一次扩展为六字符:#aabbcc,再按上述方法计算。这是W3C标准的规则,本页面完全遵循。
页面功能:输入与输出规则
用户在输入框中键入HEX颜色代码,页面即时显示对应的RGB整数值。输入处理规则如下:
| 输入类型 | 示例 | 处理方式 |
|---|---|---|
| 6位完整HEX(带#或不带) | #4f46e5 或 4f46e5 |
直接转换,忽略#号 |
| 3位简写HEX(带#或不带) | #abc 或 abc |
自动扩展为#aabbcc再转换 |
| 无效格式 | #xyz、#12345、1 |
显示错误提示:"输入一个类似 #4f46e5 或 #abc 的十六进制颜色。" |
所有颜色字段(HSL、HSV、CMYK、LAB)在输入后同步更新,提供完整的颜色空间对照。编辑任意字段都会触发全部字段重新计算,确保数据一致。转换过程完全在浏览器本地执行,不发送任何数据到服务器。
实际应用场景:谁需要这个转换
- 前端开发者:在CSS中使用HEX简洁,但在JavaScript的Canvas API、WebGL或Dynamic styles中需要RGB数值。例如设置
ctx.fillStyle = 'rgb(79,70,229)'时,可直接复制页面输出的结果。 - UI/UX设计师:品牌规范常给出HEX值,但设计软件(Figma、Sketch)的色板允许输入RGB数值。直接换算可避免手动计算错误。
- 游戏与数字艺术创作者:进行颜色数学运算(如线性插值、颜色混合)时,0–255的整数比HEX更方便。
- 学习颜色模型的学生:通过手动输入不同HEX并观察RGB变化,直观理解十六进制与加色模型的关系。
常见问题与边缘案例
为什么三字符HEX能展开成六字符?
#abc 等价于 #aabbcc,这是一种简写约定,因为每通道的亮度被压缩成半精度。例如 #fff 就是 #ffffff(白色)。本页面自动完成此展开,无需用户手动补充。
输入 #ABC 能工作吗?
可以。字母不区分大小写,#abc 和 #ABC 都将被正确转换。底层JavaScript的parseInt()函数能自动识别大小写。
如果输入 #1234567 会怎样?
该值包含7个字符(带#号时为8个),不符合6位或3位格式,页面会显示错误提示。本页面仅接受6位(含3位简写)标准HEX,不接受8位带Alpha的格式。
为什么转换结果总是整数?
因为每一位十六进制数字对应4位二进制,两两组合正好覆盖0–255的256个整数,没有小数。这是进制本身的特性。
转换结果能直接用在CSS的rgb()函数中吗?
可以。CSS的rgb(79, 70, 229)与#4f46e5在大多数现代浏览器中效果完全一致(sRGB色彩空间)。但注意旧版IE可能不支持rgb(),建议使用HEX以保证兼容性。
FAQ(常见问题)
问:输入HEX颜色时必须带 # 号吗?
不必。工具会自动识别并忽略可选的 # 前缀,因此 #4f46e5 和 4f46e5 效果相同。
问:三字符简写如 #333 对应的RGB是多少?
展开为 #333333,即R=51、G=51、B=51(因为3×16+3=51),是深灰色。
问:本页面支持 #FF0000AA 这样的半透明颜色吗?
不支持。页面专为6位(含3位简写)HEX设计,不处理Alpha通道。如需包含Alpha,请使用本网站其他相关工具。
问:为什么我在其他工具中看到HEX转RGB结果是浮点数?
标准RGB通道的值必须是0–255的整数,任何浮点数都意味着不正确的实现。本页面严格输出整数。
问:输入 #1E90FF 得到什么?
#1E90FF是道奇蓝(DodgerBlue),转换:1E=30, 90=144, FF=255 → rgb(30, 144, 255)。
问:如果我输入 #0f0 结果是多少?
展开为 #00ff00,即R=0,G=255,B=0 —— 纯绿色。