在我的 C++ 应用程序中,我有一个 png 图像的颜色,以红色、绿色、蓝色值表示。我将这些值存储在三个整数中。
如何将RGB值转换为等效的十六进制值?
类似格式的示例 0x1906
编辑:我会将格式保存为 GLuint。
将每种颜色的适当位存储到至少 24 位的无符号整数中(例如long
):
unsigned long createRGB(int r, int g, int b)
{
return ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff);
}
现在改为:
unsigned long rgb = 0xFA09CA;
你可以做:
unsigned long rgb = createRGB(0xFA, 0x09, 0xCA);
请注意,上面不会处理 Alpha 通道。如果您还需要对 alpha (RGBA) 进行编码,那么您需要这样:
unsigned long createRGBA(int r, int g, int b, int a)
{
return ((r & 0xff) << 24) + ((g & 0xff) << 16) + ((b & 0xff) << 8)
+ (a & 0xff);
}
Replace unsigned long
with GLuint
如果那是你所需要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)