十进制颜色为RGB颜色

我有一个十进制(不是十六进制)颜色代码,使用Java,我需要将它转换为三种RGB颜色。

例如,16777215(纯白色)需要转换为红色:255绿色:255蓝色:255。
需要将65280(纯绿色)转换为红色:0绿色255:蓝色:0

这是一个转换器的更多例子。


只是做一些小计算,并在上面链接的页面上用计算器玩,我已经确定:

  • 红色等于65536(256 ^ 2)
  • (255x65536 = 16711680,又名纯红色)
  • 绿色等于256(256 ^ 1)
  • (255x256 = 65280,又名纯绿色)
  • 蓝色等于1(256 ^ 0)
  • (255x1 = 255,又名纯蓝色)
  • 我可以告诉它显然与字节有关,但我最后一点想念。 对于bits / bytes / etc的整个概念以及它如何与Java进行交互,我并不是最好的,所以它可能相当简单。

    那么,有谁知道这样做的最好方法? 使用java将单个数字小数颜色转换为三个单独的RGB值的最佳方法是什么?


    你可以做

    Color color = new Color(16777215);
    int red = color.getRed();
    int green = color.getGreen();
    int blue = color.getBlue();
    

    你在哪里告诉权利:RGB值被编码为int字节。 R是字节2,G是字节1,B是字节0,总计达24位颜色深度。 根据永恒性,这可能是一种可能的表示。

    00000000 00000000 00000000 00000000  <-- 32bit int
             ^             ^      ^
             |             |      |
             +--red here   |      +--green here
                  8bit     |            8bit
                           |
                           +--blue here
                                 8bit
    

    您可以使用一些位移和掩码来提取RGB值:

    int red = (color >> 16) & 0xff;
    int green = (color >> 8) & 0xff;
    int blue = color & 0xff;
    

    您可以通过简单的按位操作获取通道。

    int r = (color >> 16) & 0xff;
    int g = (color >> 8)  & 0xff;
    int b = color & 0xff;
    

    从那里,应该很容易做任何你想要的颜色信息。

    链接地址: http://www.djcxy.com/p/87797.html

    上一篇: Decimal color to RGB color

    下一篇: Convert a RGB Color Value to a Hexadecimal