保存RGB颜色的最有效方法

时间:2016-02-02 11:32:25

标签: performance rgb pseudocode rgba

我有一个相当简单的问题: 如果我想在RGB光谱中保存颜色,那么将它保存在内存中的最有效方法是什么? (我不包括包装类,因为这取决于语言)

例如在伪代码中:

int r = 255;
int g = 255;
int b = 255;

string rgb = "#FFFFFF";

是描述rgb值的两种方法,但是还需要更多空间保留。我想知道是否有“最好”的方法来做到这一点。

在我看来,它可能是char数据类型,但您需要其中三种,那么如何有效地保存它们呢?

1 个答案:

答案 0 :(得分:2)

虽然它可能不是最有效的方法,但是将所有三个8位值存储在一个int中,并且如果需要,使用剩余的8位用于alpha,这是执行此操作的标准方法。例如(在类似C的代码中):

int convert(int r, int g, int b, int a)
{
    return (r << 24) | (g << 16) | (b << 8) | a;
}

int getR(int rgba)
{
    return (rgba >> 24) & 0xFF;
}

要获得其他值,只需将shift替换为24,绿色为16,蓝色为8,alpha为0。

存储三个字符也可以正常工作。字符串使用的内存比需要的多得多。但实际上,你存储了多少种颜色?您的应用程序是否使用了太多存储空间?如果没有,可能不需要担心。