Есть ли способ конвертировать цветовые коды MS Access в Hex и наоборот в extjs? например: - (белый) 16777215 → #FFFFFF - (синий) 16711680 → # 0000FF
Чистый js:
var color = 5243047;
var b = Math.floor(color / (256 * 256));
var g = Math.floor((color - b * 256 * 256) / 256);
var r = color - b * 256 * 256 - g * 256;
console.log(r, g, b);
function rgbToHex (r, g, b) {
r = r.toString(16);
g = g.toString(16);
b = b.toString(16);
if (r.length == 1) r = '0' + r;
if (g.length == 1) g = '0' + g;
if (b.length == 1) b = '0' + b;
return (r + g + b).toUpperCase();
}
console.log(rgbToHex(r, g, b));
Вы можете посмотреть здесь: http://www.endprod.com/colors/
Задний ход:
function hexToRgb (hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
const rgbToDec = (r, g, b) => (b * 2 ** 16) + (g * 2 ** 8) + r;
По-видимому, цвета MS Access находятся в формате BGR - вы можете конвертировать их в шестнадцатеричный формат и задавать значения в правильном порядке (не забудьте заполнить "0" для меньших номеров)
var color = 16711680;
var colorBGR = color.toString(16);
console.log("BGR:", "#" + colorBGR)
var colorRGB = colorBGR.slice(-2) + colorBGR.slice(2,4) + colorBGR.slice(0,2)
console.log("RGB:", "#" + colorRGB)
В качестве альтернативы вы можете использовать битовые операции для получения цветовых компонентов:
var color = 5243047; // #A70050
var r,g,b;
b = (color & (255 << 16)) >> 16;
g = (color & (255 << 8)) >> 8;
r = color & 255;
console.log(r.toString(16),g.toString(16),b.toString(16))