首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位操作:反向argb忽略alpha

位操作:反向argb忽略alpha
EN

Stack Overflow用户
提问于 2017-10-28 15:41:33
回答 1查看 176关注 0票数 2

我对bit操作很陌生,我想用它做以下几件事:

我需要一个倒置颜色的argb代码为我的程序,如红色变成青色或白色变成黑色。通过对photoshop的实验,我发现你必须计算255 -红色,255 -绿色和255 -蓝色。所以这个可能是这样的:

代码语言:javascript
复制
int getInversed(int argb) {
    Color old = new Color(argb);
    Color negative = new Color(255 - old.getRed(), 255 - old.getGreen(), 255 - old.getBlue(), old.getAlpha());
    return negative.getRGB();
}

现在我猜到,如果将红色、绿色和蓝色的值作为8位bytes,您可以简单地用~操作符对它们进行逆以得到相同的结果。

但我无法反演整个argb代码,因为这也会逆alpha,并且我希望alpha不受影响:

代码语言:javascript
复制
public int getInversed(int argb) {
    return ~argb;    //inverses alpha as well
}

那么,我如何用位操作来反演argb代码,而忽略alpha部分呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-28 15:46:40

你可以用异或掩模来做

因此,比特值的反演是通过用1进行XORing来完成的。 还请注意,异或掩蔽是位安全的,这意味着它不会影响未隐藏的位。

代码语言:javascript
复制
return argb ^ 0x00FFFFFF;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46991486

复制
相关文章

相似问题

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