在我的C应用程序中,我有一个png图像的颜色,红色,绿色,蓝色值.我已将这些值存储在三个整数中.
@H_404_2@如何将RGB值转换为等效的十六进制值?
@H_404_2@这种格式的例子就像0x1906一样
@H_404_2@编辑:我将格式保存为GLuint.
@H_404_9@解决方法
将每种颜色的相应位存储为至少24位的无符号整数(如长):
unsigned long createRGB(int r,int g,int b) { return ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff); }@H_404_2@而不是:
unsigned long rgb = 0xFA09CA;@H_404_2@你可以做:
unsigned long rgb = createRGB(0xFA,0x09,0xCA);@H_404_2@请注意,上述内容不会处理alpha通道.如果你还需要编码alpha(RGBA),那么你需要这样:
unsigned long createRGBA(int r,int b,int a) { return ((r & 0xff) << 24) + ((g & 0xff) << 16) + ((b & 0xff) << 8) + (a & 0xff); }@H_404_2@如果那就是你需要的,用GLuint替换unsigned long.