Вы уверены, что это не 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));