如何移位颜色中的位(十六进制值)

时间:2011-09-08 16:19:55

标签: java bit-shift

我在变量中有以下十六进制值存储:

0x04a8f5

我想将值转换为:

0xff04a8f5

我怎样才能做到这一点? 我试图通过以下操作来做到这一点:

int result = 0x04a8f5 >> 8;

2 个答案:

答案 0 :(得分:1)

使用以下示例作为指导。

val = 0x04a8f5; //Your value
val |= 0xFF000000; //OR 0xFF000000 with your value, and assign the new value to val

注意,这不是位移位,因为如果原始值是32位(或更大)的整数,那么可用的高位字节可以存储FF值。换句话说,您的原始变量实际上是0x0004a8f5。使用|=赋值将OR FF包含您想要更改的字节。没有必要转移。

此外,将0x0004a8f5移位8位会产生0x000004a8

答案 1 :(得分:1)

因为你想在你的号码前面加上FF(1111 1111),所以这根本不是一点点的转变。您只需在颜色值中添加常量。

只要您的颜色值永远不会超过6个十六进制数字来表示,您就可以这样做:

color |= 0xFF000000