大概是这样,h最大为360°function getRValue(color)
{
return color & 0xFF;
}function getGValue(color)
{
return (color >> 8) & 0xFF;
}function getBValue(color)
{
return (color >> 16) & 0xFF;
}function RGB(r, g, b)
{
return r | (g << 8) | (b <<16);
}function RGB2HSL(color) {
var r = getRValue(color) / 255;
var g = getGValue(color) / 255;
var b = getBValue(color) / 255;
var max = Math.max(r, Math.max(g, b));
var min = Math.min(r, Math.min(g, b));
var result = {};
result.l = (max + min) / 2;
if (max == min) {
result.s = 0;
result.h = 0;
} else {
if (result.l < 0.5)
result.s = (max - min) / (max + min);
else result.s = (max - min) / (2 - max - min);
var t = max - min;
if (result.r == max)
result.h = (g - b) / t;
else if (g == max)
result.h = 2 + (b - r) / t
else result.h = 4.0 + (r - g) / t;
result.h = result.h / 6;
if (result.h < 0) result.h++;
}
result.h = Math.round(result.h * 360);
result.s = Math.round(result.s * 100);
result.l = Math.round(result.l * 100);
return result;
}alert(RGB2HSL(0x123456).l);另外内存中数据和数值表达式相反
即:不是0xRRGGBB而是0xBBGGRR