在我的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.