Преобразование RGBA в шестнадцатеричный или ARGB в шестнадцатеричный

#javascript #html #flash #color-scheme

#javascript #HTML #flash #цветовая схема

Вопрос:

Я пытаюсь преобразовать десятичный цветовой код из флэш-приложения в шестнадцатеричный цветовой код для отображения HTML

У меня есть эти числа длиной 8 цифр, но я не уверен, являются ли они ARGB или RGBA. Есть ли способ выяснить это из самих цветовых кодов?

У меня есть функция javascript, которая может преобразовывать десятичное число в шестнадцатеричное число, но я не компенсирую значение A (или удаляю его). Можете ли вы помочь мне исправить мою функцию для извлечения / удаления значения A из десятичного кода RGB?

 function decimalToHex( num )
{
  if (num == null || num == "undefined") { return "0xFFFFFF"; }

  var intNum = (parseInt(num,10)) amp; 8;  // does this remove the most significant 8 bits?
  return intNum.toString(16);
}
 

Комментарии:

1. Ваш вопрос не имеет никакого смысла. Вы пытаетесь преобразовать dec в hex или RGBA с цветом фона в RGB?

2. Is there a way to figure this out from the colour codes themselves? Нет; по крайней мере, не во всех случаях.

3. ну, я пытаюсь преобразовать значение flash col (которое я не уверен, является ли оно либо ARGB, либо RGBA) в что-то вроде формы #ffffff. Так будет ли это десятичным в шестнадцатеричном?

Ответ №1:

Если альфа-значение находится в старшем байте, то побитово И с 0x00FFFFFF, чтобы удалить это. Итак:

 var intNum = (parseInt(num,10)) amp; 0x00FFFFFF;
 

Или, если альфа-значение находится в младшем байте, побитово И с 0xFFFFFF00, затем сдвиньте вправо на 8:

 var intNum = (parseInt(num,10) amp; 0xFFFFFF00) >> 8;