【问题标题】:Convert RGBA to Hex or ARGB to Hex将 RGBA 转换为十六进制或 ARGB 转换为十六进制
【发布时间】:2011-11-01 02:36:39
【问题描述】:

我正在尝试将 Flash 应用程序中的十进制颜色代码转换为 HTML 显示的十六进制颜色代码

我有这些 8 位数字,但我不确定它们是 ARGB 还是 RGBA。有没有办法从颜色代码本身来解决这个问题?

我有一个 javascript 函数,可以将十进制数转换为十六进制数,但我没有补偿 A 值(或删除它)。你能帮我修复我的函数以从 RGB 十进制代码中提取/删除 A 值吗?

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

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

【问题讨论】:

  • 你的问题没有任何意义。您是在尝试将 dec 转换为十六进制,还是将带有背景颜色的 RGBA 转换为 RGB?
  • Is there a way to figure this out from the colour codes themselves? 没有;至少不是在所有情况下。
  • 嗯,我正在尝试将 flash col 值(我不确定它是 ARGB 还是 RGBA)转换为 #ffffff 形式。那么这会是十进制到十六进制吗?

标签: javascript html flash color-scheme


【解决方案1】:

如果 alpha 值在最高字节中,则按位与 0x00FFFFFF 将其删除。所以:

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

或者,如果 alpha 值在最低字节中,则与 0xFFFFFF00 进行按位与,然后右移 8:

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

【讨论】: