C++ 获取属于给定整数的颜色

C++ 获取属于给定整数的颜色,c++,colors,integer,allegro,C++,Colors,Integer,Allegro,我已经学会了RGBA的工作原理,所以我意识到属于不同颜色的十六进制数可以转换成简单的整数。这意味着我可以用整数存储颜色,即使其中一些颜色相当大 我的问题是,如何才能得到属于我给程序的整数的颜色 编辑:当然,我忘了提到我也使用Allegro,但我是新手……有什么功能可以做到这一点吗?如果你将颜色存储为整数,听起来像是在使用Allegro 4。它提供了多种功能供您使用,只需查看手册即可 // int makecol(int r, int g, int b); int white = makecol

我已经学会了RGBA的工作原理,所以我意识到属于不同颜色的十六进制数可以转换成简单的整数。这意味着我可以用整数存储颜色,即使其中一些颜色相当大

我的问题是,如何才能得到属于我给程序的整数的颜色


编辑:当然,我忘了提到我也使用Allegro,但我是新手……有什么功能可以做到这一点吗?

如果你将颜色存储为整数,听起来像是在使用Allegro 4。它提供了多种功能供您使用,只需查看手册即可

// int makecol(int r, int g, int b);

int white = makecol(255, 255, 255);
int green = makecol(0, 255, 0);
或者反过来说:

int r = getr(color);
int g = getg(color);
int b = getb(color);
对于Allegro 4,订购取决于图形卡。因此,相同颜色的
makecol()
的返回值可能不同,具体取决于它是存储在RGB还是BGR中。因此,您必须使用上述功能来获得正确的颜色值,并且只有在设置图形模式之后


如果使用Allegro 5(我强烈推荐它胜过Allegro 4),您将使用
Allegro_COLOR
struct,它隐藏了底层的实现细节,因此上述内容都不适用。

是的,我使用的是Allegro 5。=)但你仍然不明白我的意思:我想用一个数字而不是三个数字来存储颜色,因为处理三个数字比每个元素只处理一个更危险。当然,谢谢你的帮助@ZoltánSchmidt,所有Allegro 5例程都需要使用
Allegro_COLOR
struct,因此将它们存储为单个整数没有任何意义。也就是说,RGB最简单的整数表示形式是
intc=((r