位移四个整数以形成一个浮点数

问题描述

我正在开发一个应用程序,它的颜色使用了一种相当奇怪的格式。它使用 ARGB 的变体,通过使用浮点数来存储所有数据。颜色本身被硬编码到类中,并通过此操作解码:

float alpha = (float)(color >> 24 & 255) / 255.0F;
float red = (float)(color >> 16 & 255) / 255.0F;
float blue = (float)(color >> 8 & 255) / 255.0F;
float green = (float)(color & 255) / 255.0F;

浮点数的 32 位用于提取 4 个 8 位整数,方法是将它们移出,并将它们转换为 0 到 1 之间的浮点数。这样,​​它们会被图形库进一步处理。

我写了一个类来表示颜色,因为我真的不想使用所有这些神奇的浮点数。我需要一种方法来逆转这个过程,但我对这种逆转将如何运作一无所知。我首先将我的浮点数转换为 0 到 1 之间的整数,但这大约是我得到的。我如何才能将这些值以与原始值相同的顺序“粘合”在一起?

  public int toARGB() {
        System.out.println(fromARGB(1615855616)); // gives  Color{red=0.3137255,green=0.0,blue=0.0,alpha=0.3764706}
        System.out.println(fromARGB(-2130706433)); // gives  Color{red=1.0,green=1.0,blue=1.0,alpha=0.5019608}

        int closeAlpha = (int) (alpha*255.0F);
        int closeRed = (int) (red*255.0F);
        int closeGreen = (int) (green*255.0F);
        int closeBlue = (int) (blue*255.0F);
 
        //How do I proceed here?
 
        return null;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)