rgb颜色数字与十六进制字符串之间转换

本文介绍了一种将RGB颜色格式转换为十六进制格式,以及从十六进制格式转换回RGB数字格式的方法。通过JavaScript实现,文章详细展示了如何处理不同格式的颜色输入,包括处理边界情况和错误输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff

  1. rgb 中每个 , 后面的空格数量不固定
  2. 十六进制表达式使用六位小写字母
  3. 如果输入不符合 rgb 格式,返回原始输入
function rgb2hex(sRGB) {
   return sRGB.replace(/^rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)$/,function(num,num1,num2,num3){ 
       //考虑越界问题
       if (num1<0 || num1>255 || num2<0 || num2>255 || num3<0 || num3>255) {
           return num;
       }
       else{
        function rgb(s){
        if (s<16) {
            //位数不够时补0
            return '0'+parseInt(s).toString(16);
        }
        else{
            return parseInt(s).toString(16);
        }
        }
        return '#'+rgb(num1)+rgb(num2)+rgb(num3);
    }
    });
}
alert(rgb2hex('rgb(255, 255, 255)'));  //'#ffffff'

十六进制转RGB数字格式

function hextorgb(str) {
		var newstr = str.slice(1).split('');
		var hexnum = [];
		var numarr = newstr.map(function(item,index,array){
			var x=0;
			switch(item){
				case 'a': x = 10;
				break;
				case 'b': x = 11;
				break;
				case 'c': x = 12;
				break;
				case 'd': x = 13;
				break;
				case 'e': x = 14;
				break;
				case 'f': x = 15;
				break;
				default:
				x = item;
			}
			return x;
		});
		for(var i=0; i<numarr.length;){
		//去掉字符 ’#’
			var y = numarr[i]*Math.pow(16,1) + numarr[i+1]
			if (y<100) {
				y = '0'+y ;  //位数不够补0
			}
			hexnum.push(y);
			i +=2;
		}
		return('rgb(' + hexnum.join(',') + ')');
}
alert(hextorgb('#0bffff'));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值