JavaScript从十六进制中获取alpha值

JavaScript从十六进制中获取alpha值,javascript,html,Javascript,Html,我正在开发一个工具,将转换html颜色之间的任何格式,如RGB,RGBA,十六进制,HSLA,命名等 以及用于IE6中过滤器的HEXFFFFFF到Alpha HEX 00FFFFFF。 但是,我的问题是,我无法将alpha值即00从alpha十六进制颜色转换为rgba alpha值即0.5。 请帮助我…只需将前两位数字从十六进制转换为数字,然后除以255即可 var rx = /^#([0-9a-f]{2})[0-9a-f]{6}$/i; var m = rx.match(theColor);

我正在开发一个工具,将转换html颜色之间的任何格式,如RGB,RGBA,十六进制,HSLA,命名等

以及用于IE6中过滤器的HEXFFFFFF到Alpha HEX 00FFFFFF。 但是,我的问题是,我无法将alpha值即00从alpha十六进制颜色转换为rgba alpha值即0.5。
请帮助我…

只需将前两位数字从十六进制转换为数字,然后除以255即可

var rx = /^#([0-9a-f]{2})[0-9a-f]{6}$/i;
var m = rx.match(theColor);
if (m) {
   alpha = parseInt(m[1], 16) / 255;
}

只需将前2位数字从十六进制转换为数字,然后除以255即可

var rx = /^#([0-9a-f]{2})[0-9a-f]{6}$/i;
var m = rx.match(theColor);
if (m) {
   alpha = parseInt(m[1], 16) / 255;
}

我知道你已经接受了肯尼特的答案,但我想我还是要补充一下。您可以对十六进制转换后的数字使用移位和掩蔽来获得其某些部分:

// Return an array in the format [ red, green, blue, alpha ]
function hex2rgba(str) {
    var num = parseInt(str.slice(1), 16); // Convert to a number
    return [num >> 16 & 255, num >> 8 & 255, num & 255, num >> 24 & 255];
}

var rgba = hex2rgba("#00FFFFFF");
// -> [255, 255, 255, 0]
然后,您可以将最后一个元素除以255,得到一个可用于IE过滤器的值

更多信息:


我知道你已经接受了肯尼特的答案,但我想我还是要补充一下。您可以对十六进制转换后的数字使用移位和掩蔽来获得其某些部分:

// Return an array in the format [ red, green, blue, alpha ]
function hex2rgba(str) {
    var num = parseInt(str.slice(1), 16); // Convert to a number
    return [num >> 16 & 255, num >> 8 & 255, num & 255, num >> 24 & 255];
}

var rgba = hex2rgba("#00FFFFFF");
// -> [255, 255, 255, 0]
然后,您可以将最后一个元素除以255,得到一个可用于IE过滤器的值

更多信息:


是的,谢谢!我喜欢你的答案,因为它能处理JavaScript将位运算符的操作数作为有符号的32位整数。是的,谢谢!我喜欢您的答案的地方在于,它负责JavaScript将按位运算符的操作数处理为有符号32位整数。