位移和按位运算可对RGB值进行编码

Beh*_*nil 8 java bit-manipulation

我想将RGB颜色编码为单个整数值.

假设编码算法是这样的:

int code = (blue * 256 * 256) + (green * 256) + red
Run Code Online (Sandbox Code Playgroud)

如何使用位移和/或按位运算符将RGB组件编码/解码到代码?

Dev*_*ked 10

    int blueMask = 0xFF0000, greenMask = 0xFF00, redMask = 0xFF;
    int r = 12, g = 13, b = 14;
    int bgrValue = (b << 16) + (g << 8) + r;
    System.out.println("blue:" + ((bgrValue & blueMask) >> 16));
    System.out.println("red:" + ((bgrValue & redMask)));
    System.out.println("green:" + ((bgrValue & greenMask) >> 8));
Run Code Online (Sandbox Code Playgroud)

  • @Behnil是的正确我用它作为RGB,但我看到你的原始问题有它作为BGR,但可能是最好把它作为RGB这是大多数人所指的 (2认同)