花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 26|回复: 9

十六进制颜色转RGB格式

[复制链接]
  • TA的每日心情
    慵懒
    2025-11-18 12:02
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    3010

    主题

    12万

    回帖

    28万

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

    性别
    保密
    积分
    280091
    金钱
    2587412
    经验
    3492815
    主题
    3010
    精华
    1216
    在线时间
    4134 小时
    注册时间
    2021-3-2
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮超版

    发表于 2025-11-18 12:04 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    标准的十六进制颜色使用 #3e94af 这样的结构表示,# 是前缀,后面是6位数的十六进制数值。数值分成三组,每组两位数,分别代表 r、g、b 即红、绿、蓝三种颜色的成分,故十六进制颜色的表达结构可以抽象为#RRGGBB。依此原理,可以理解十六进制颜色的构造是一种混合方式,即将红绿蓝三种颜色按顺序和不同的比例混合而得。十六进制数值为 0~9a~f,注意十六进制颜色每一种色料使用两位数表示,凑足六位数,再加个#号前缀。

    传统的十六进制颜色有用#号加三位数表达的,例如 #3a9,它实际上是 #33aa99 的简写。要将十六进制颜色转为rgb颜色值,我们先得解决颜色值是标准表达法还是简写表达法,同时将#号剔除掉。以下是处理这个问题的工具函数:

    // 处理十六进制颜色 : @param str 为待处理字串 const fullHex = (str) => { let newStr = str.replace('#', ''); // 删掉#号(如有) // 若是简写形式补全为六位数 if (newStr.length === 3) { return newStr.split('').map(i => i.repeat(2)).join(''); } return newStr; // 否则返回去除#号后的字串 };

    还得准备一个进制转换的工具函数,这里用到的是十六进制转十进制,像这样,没有做参数合法性检测,需要时可以自行加入:

    const Hex2Dec = (str) => parseInt(str, 16);

    函数名 Hex2Dec 是简写形式的语义化名称,Hex 是 Hexadecimal(十六进制)的缩写,2是 to(到) 的意思,Dec 是 Decimal(十进制)的简化。函数处理传入的参数 str 字串,使用JS内置函数 parseInt 将其转为十六进制数值并返回结果。

    接下来就可以将十六进制颜色字串转rgb格式了。rgb颜色表达格式格式为 rgb(R, G, B),R红色,G绿色,B蓝色,数值为十进制,每一种成分取值空间是 0~255(含头尾边界)。这样,我们就可以有如下实现思路:用函数 fullHex() 处理十六进制颜色字串为符合要求的十六进制数值格式,将该数值字串两两分为一组,得到 rr、gg、bb 三个十六进制数值字串,再用 Hex2Dec() 函数将这些字串一一转为十进制,最后拼接成rgb格式的颜色值。函数如下:

    // 十六进制颜色转rgb const HexColor2Rgb = (str) => { const ar = fullHex(str).match(/.{2}/g).map(a => Hex2Dec(a)); return 'rgb(' + ar.join(', ') + ')'; // 调用函数示例: console.log(HexColor2Rgb('#7B68EE')); // rgb(123, 104, 238) };

    要点:一,弄清两种结构的十六进制表达法,将简写形式转为全写形式;二,拆分十六进制数值为两两一组,每一组都转换为十进制后再拼接为rgb格式。

    评分

    参与人数 2威望 +80 金钱 +160 经验 +80 收起 理由
    杨帆 + 30 + 60 + 30 精品文章!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-11-18 12:02
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    3010

    主题

    12万

    回帖

    28万

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

    性别
    保密
    积分
    280091
    金钱
    2587412
    经验
    3492815
    主题
    3010
    精华
    1216
    在线时间
    4134 小时
    注册时间
    2021-3-2
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮超版

     楼主| 发表于 2025-11-18 12:07 | 显示全部楼层
    健壮的函数应该对传参做合法性检测。上述自定义函数出于简化目的基本都不对传参做此类检测。特此说明。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1879

    主题

    32万

    回帖

    36万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    性别
    保密
    积分
    368637
    金钱
    73584
    经验
    6949794
    主题
    1879
    精华
    498
    在线时间
    11925 小时
    注册时间
    2016-10-2
    最后登录
    2025-11-18

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-11-18 13:19 | 显示全部楼层
    十六进制数值为 0~9a~f,对十六进制很陌生,(0-9对应0-9,A-F/a-f对应10-15),反正15以上就开始进位了,好在它和rgb的表达顺序一样,都是#RRGGBB的表述,把它的值分组转化成十进制并赋予给rgb格式,就完活了。只是十六进制转十进制感觉好难啊,还好有电脑语言可以转化
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1879

    主题

    32万

    回帖

    36万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    性别
    保密
    积分
    368637
    金钱
    73584
    经验
    6949794
    主题
    1879
    精华
    498
    在线时间
    11925 小时
    注册时间
    2016-10-2
    最后登录
    2025-11-18

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-11-18 13:21 | 显示全部楼层
    上来还需要把简写的补齐了,然后才能转换,还得弄掉#。
    这些都能用代码实现呢。学习了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-18 12:02
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    3010

    主题

    12万

    回帖

    28万

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

    性别
    保密
    积分
    280091
    金钱
    2587412
    经验
    3492815
    主题
    3010
    精华
    1216
    在线时间
    4134 小时
    注册时间
    2021-3-2
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮超版

     楼主| 发表于 2025-11-18 19:13 | 显示全部楼层
    红影 发表于 2025-11-18 13:19
    十六进制数值为 0~9a~f,对十六进制很陌生,(0-9对应0-9,A-F/a-f对应10-15),反正15以上就开始进位了,好在 ...

    进制转换过去是高中课程里有的。编程语言,如果没有内置的转换函数,也可以编写一个,使用别人编写的省事。而JS,虽然也没有内置转换函数,但可以绕过换算,灵活使用内置其它方法来实现转换工作
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-18 12:02
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    3010

    主题

    12万

    回帖

    28万

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

    性别
    保密
    积分
    280091
    金钱
    2587412
    经验
    3492815
    主题
    3010
    精华
    1216
    在线时间
    4134 小时
    注册时间
    2021-3-2
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮超版

     楼主| 发表于 2025-11-18 19:14 | 显示全部楼层
    红影 发表于 2025-11-18 13:21
    上来还需要把简写的补齐了,然后才能转换,还得弄掉#。
    这些都能用代码实现呢。学习了

    编程语言都是很强大的,只需灵活运用
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-11-18 10:56
  • 签到天数: 368 天

    [LV.9]以坛为家II

    293

    主题

    2437

    回帖

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    性别
    保密
    积分
    15438
    金钱
    260722
    经验
    107132
    主题
    293
    精华
    73
    在线时间
    983 小时
    注册时间
    2024-11-5
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2025-11-18 20:37 | 显示全部楼层
    马黑黑 发表于 2025-11-18 19:14
    编程语言都是很强大的,只需灵活运用

    是,先得有个实现转换的完整示例,才谈得上使用甚至灵活运用
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-11-18 12:02
  • 签到天数: 1643 天

    [LV.Master]伴坛终老

    3010

    主题

    12万

    回帖

    28万

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

    性别
    保密
    积分
    280091
    金钱
    2587412
    经验
    3492815
    主题
    3010
    精华
    1216
    在线时间
    4134 小时
    注册时间
    2021-3-2
    最后登录
    2025-11-18

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮超版

     楼主| 发表于 2025-11-18 20:42 | 显示全部楼层
    杨帆 发表于 2025-11-18 20:37
    是,先得有个实现转换的完整示例,才谈得上使用甚至灵活运用

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1879

    主题

    32万

    回帖

    36万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    性别
    保密
    积分
    368637
    金钱
    73584
    经验
    6949794
    主题
    1879
    精华
    498
    在线时间
    11925 小时
    注册时间
    2016-10-2
    最后登录
    2025-11-18

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-11-18 22:49 | 显示全部楼层
    马黑黑 发表于 2025-11-18 19:13
    进制转换过去是高中课程里有的。编程语言,如果没有内置的转换函数,也可以编写一个,使用别人编写的省事 ...

    这个内置的转换函数真方便,电脑直接完成了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-11-17 10:56
  • 签到天数: 1050 天

    [LV.10]以坛为家III

    1879

    主题

    32万

    回帖

    36万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    性别
    保密
    积分
    368637
    金钱
    73584
    经验
    6949794
    主题
    1879
    精华
    498
    在线时间
    11925 小时
    注册时间
    2016-10-2
    最后登录
    2025-11-18

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-11-18 22:50 | 显示全部楼层
    马黑黑 发表于 2025-11-18 19:14
    编程语言都是很强大的,只需灵活运用

    还需记住它们啊,记不住怎么去用啊
     
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-11-19 00:20 , Processed in 0.070431 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表