【问题标题】:RGBA Hex from RGB Hex来自 RGB Hex 的 RGBA Hex
【发布时间】:2011-10-04 01:38:42
【问题描述】:

我想用 0xFF0000 (RGB) 之类的颜色制作,一种带有 FF alpha 的 RGBA 颜色,例如 0xFF0000FF。我想这将是一些带有比特的东西。

提前致谢, 卡佩尔

【问题讨论】:

  • @Christoffer,看看他的标签。我假设他想要在 C 中使用它。我确实建议添加更多描述,但无论如何,我几乎不赞成这个问题,直到我看到 C 标记

标签: c colors hex rgb rgba


【解决方案1】:
uint32_t rgb=0xFF0000;
uint32_t rgba = (rgb << 8) | 0xFF;

解释: (rgb &lt;&lt; 8) 将 rgb 值左移 8 位。这意味着它恰好向左移动一个字节,例如0x12345678 将更改为0x34567800。前两位数字在移位后不适合 32 位,因此它们被删除。其他所有东西都向左移动,然后在低位添加新的零。

下一个运算符是按位的or。它是一个 or 应用于每一位所以0x34567800 | 0xFF 将导致0x345678FF

(感谢@Gajet 的解释)

【讨论】:

  • @Kacper uint32_t 类型在 中,所以不要忘记包含它。 +1
  • 解释:(rgb &lt;&lt; 8) 将 rgb 值移动 8 位。这意味着它恰好向左移动一个字节,因此例如0x12345678 将更改为0x34567800。前两个大数字被删除,每一个移位,然后在低位添加新的零。下一个运算符是bitwise or。这是一个or 应用于每个位,所以0x34567800 | 0xff 将导致0x345678ff
  • @hexa 好点。你可以选择使用uint_least32_t,或者如果你知道你正在使用32位整数的平台上使用unsigned int
  • @Gajet 我把你的解释放在我的回答中
猜你喜欢
  • 2011-10-04
  • 2012-04-03
  • 2012-09-23
  • 2014-03-01
  • 2012-03-05
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
相关资源
最近更新 更多