在我的 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 channel 。如果您还需要编码 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);
}
如果您需要,请将 unsigned long
替换为 GLuint
。
关于c++ - 如何在 C++ 中将 RGB 颜色值转换为十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375156/