首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++包RGBA到无符号整数

C++包RGBA到无符号整数
EN

Stack Overflow用户
提问于 2011-07-23 06:33:21
回答 4查看 2.6K关注 0票数 0

对于下面的类,假设RGBA都在0-255之间

代码语言:javascript
复制
class Color {
    public:
        short int r;
        short int g;
        short int b;
        short int a;

我见过像过时的GD库这样的库使用位移位和&,比如

代码语言:javascript
复制
 ((r & 0x7F000000) << 24) & ...

但我担心这可能会很慢,我更喜欢一种更常见的方法。任何人都知道我如何将RGBA值打包到一个无符号整数中,而不使用过多的位运算符( GD方法使用大约6-8位移位/字节)。

EN

回答 4

Stack Overflow用户

发布于 2011-07-23 06:35:59

如果以适当的顺序将RGBA值存储在类中,只需将类实例解释为无符号int即可。没时间了。在C中,它一直都是这样做的。

有关更多细节,请参阅Mark的答案。

票数 2
EN

Stack Overflow用户

发布于 2011-07-23 06:37:50

最简单的方法是重新定义Color类,使其包含unsigned char而不是short,并确保它们的顺序对于处理器的字节顺序是正确的。然后使其成为具有32位整数类型的联合。

票数 2
EN

Stack Overflow用户

发布于 2011-07-23 06:41:00

恒定量的位移位并不慢。掩蔽通常并不慢。

在某些处理器上,变量移位很慢。但是,将RGBA颜色打包到整数中不涉及可变移位,因此它往往不会很慢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6796783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档