Длинное десятичное число: извлечение значений ARGB индивидуально - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть значения цвета из приложения Flash, которые имеют формат ARGB (A - это значение альфа / прозрачности).

Мне нужно преобразовать это длинное десятичное число в RGB / шестнадцатеричное число в Javascript.

Знаете ли вы, как я могу извлечь отдельные значения R, G, B & A из длинного (8-значного) числа?

Вот моя функция, которая преобразует число в шестнадцатеричное, НО это недостаточно хорошо, потому что ему нужно преобразовать значения по отдельности (R, G, B, A):

  function decimalToHex( num )
  {
     if (num == null || num == "undefined") { return "#FFFFFF"; }

     var intNum = (parseInt(num,10)) & 0x00FFFFFF;
     var strNum = intNum.toString(16);

     while (strNum.length <6) { strNum = "0"+strNum; }

     return "#"+strNum;  //+intNum.toString(16);
  }

  function getR( num )
  {
     // eg value for num is 84545883
     return (parseInt(num,10)) & 0x00FF0000;  // does this correctly get the R value from a ARGB value?
  }

  function getG( num )
  {
     // eg value for num is 84545883
     return (parseInt(num,10)) & 0x0000FF00;  // does this correctly get the G value from a ARGB value?
  }

  function getB( num )
  {
     // eg value for num is 84545883
     return (parseInt(num,10)) & 0x000000FF;  // does this correctly get the B value from a ARGB value?
  }

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

Посмотрите, поможет ли .

0 голосов
/ 01 ноября 2011

Использовать совпадение:

var argb = '12345678';
var bits = argb.match(/\d\d/g);

alert(bits);  // ['12', '34', '56', '78']

Теперь биты находятся в массиве, который можно преобразовать в шестнадцатеричное и объединить, чтобы получить шестнадцатеричное значение RGB. Если оригинал был на самом деле десятичным значением, то для каждого значения (от 000 до 255) допустимо 3 символа, и вам может понадобиться:

var argb= '000101234034'
var bits = argb.match(/\d\d\d/g); // ['000', '101', '234', '034']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...