如何将RGB颜色值转换为C中的十六进制值?

前端之家收集整理的这篇文章主要介绍了如何将RGB颜色值转换为C中的十六进制值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的C应用程序中,我有一个png图像的颜色,红色,绿色,蓝色值.我已将这些值存储在三个整数中.

如何将RGB值转换为等效的十六进制值?

这种格式的例子就像0x1906一样

编辑:我将格式保存为GLuint.

解决方法

将每种颜色的相应位存储为至少24位的无符号整数(如长):
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 b,int a)
{   
    return ((r & 0xff) << 24) + ((g & 0xff) << 16) + ((b & 0xff) << 8)
           + (a & 0xff);
}

如果那就是你需要的,用GLuint替换unsigned long.

猜你在找的CSS相关文章