Java Color(int rgba)构造函数和int溢出

Zac*_*chB 2 java int awt colors

根据文档,这个构造函数存在:

public Color(int rgba,
         boolean hasalpha)
Run Code Online (Sandbox Code Playgroud)

我没有看到如何使用它来创建等效的Color(255,255,255,255)(例如0xFFFFFFFF),因为java没有无符号整数.

你如何使用这个构造函数的"大"颜色?

编辑

显然可以使用构造函数(惊讶),但解析像这样的RGBa颜色字符串失败:

    int x = Integer.parseInt("0xFFFFFFFF", 16); // Number format error
    Color c = new Color(x, true);
Run Code Online (Sandbox Code Playgroud)

解决方案似乎是使用BigInteger进行解析.对不起,错误的问题!

dev*_*snd 5

你的问题没有误导,但你似乎误解了Kon的答案:

你对Java的Integer一直被签名是正确的,但这并不意味着该数字中的信息位数较少.

创建颜色时:

new Color(255, 255, 255, 255)
Run Code Online (Sandbox Code Playgroud)

它与使用相同:

new Color(0xFFFFFFFF, true)
Run Code Online (Sandbox Code Playgroud)

或使用:

new Color(0b11111111111111111111111111111111, true)
Run Code Online (Sandbox Code Playgroud)

0xFFFFFFFF事实上-1,但这并不意味着任何比特都会发生变化; 这只是一个代表问题.在Color刚刚削减了必要位为每种颜色分量.

事实上,您可以使用以下方法创建所需的颜色:

Color c = new Color(-1,true);
System.out.println(c);
System.out.println(c.getAlpha());
Run Code Online (Sandbox Code Playgroud)

产量:

java.awt.Color[r=255,g=255,b=255]
255
Run Code Online (Sandbox Code Playgroud)