长十进制数:分别提取ARGB值

时间:2011-11-01 05:22:09

标签: javascript html flash

我有来自Flash应用程序的ARGB格式的颜色值(A是alpha /透明度值)。

我必须将这个长十进制数转换为Javascript中的RGB /十六进制数。

你知道如何提取个人R,G,B&一个长(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 :(得分:0)

使用匹配:

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']

答案 1 :(得分:0)

查看this是否可以帮助您。