我的颜色代码如0xff3a9bda, 0xff73bbf3
。我真的不知道这种颜色类型,因为我知道这些不是RGB,aRGB,HSB或HEX 。
当我正在开发Web应用程序时,我的问题是,我可以使用RGB和任何颜色的HTML颜色代码获取颜色代码,我想要将此颜色转换为上面指定的颜色类型代码
有人可以给我一个想法或解决方案吗?
答案 0 :(得分:4)
你确定这不是RGBA吗?
0xff3a9bda
将为rgba(255,58,155,0.85)
(RGBA)或rgba(58,155,218,1)
(ARGB)
你可以像这样进行转换:
var c = 0xff3a9bda;
var r = (c & (0xff << 24)) >>> 24;
var g = (c & (0xff << 16)) >>> 16;
var b = (c & (0xff << 8)) >>> 8;
var a = (c & 0xff) / 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';
或者像这样:
var c = 0xff3a9bda;
var a = ((c & (0xff << 24)) >>> 24) / 0xff;
var r = (c & (0xff << 16)) >>> 16;
var g = (c & (0xff << 8)) >>> 8;
var b = c & 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';
在此尝试: http://jsfiddle.net/gX6ds/1/
将#RRGGBB
转换为以下格式:
var rgb = 'AABBCC';
var c = 0xff000000 + parseInt(rgb, 16);
alert('0x' + c.toString(16));
将R,G,B值转换为以下格式:
var R = 0xAA, G = 0xBB, B = 0xCC;
var c = 0xff000000 + (R << 16) + (G << 8) + B;
alert('0x' + c.toString(16));
答案 1 :(得分:1)
没有必要使问题复杂化。你有一个32位的颜色值,几乎可以肯定你有4个颜色分量(R,G,B,A),每个组件8位。如果格式不是ARGB,那么它可能是RGBA,但这取决于你。通过反复试验确实很简单。
在任何情况下,一旦您知道哪些位代表哪些颜色组件,您需要做的就是提取R,G和B(请参阅arnaud576875的答案),然后将它们连接在一起,如#<R><G><B>
,以获取您的HTML色标。
然后取出A组件并将其设置为要应用此颜色的任何元素的opacity
。如:
#coloredElem {
color: #<R><G><B>;
opacity: <A / 255.0>;
}