2

docsによると、このコンストラクタは存在します:

public Color(int rgba,
         boolean hasalpha)

ただし、Javaにunsigned intがない場合、これを使用してColor(255,255,255,255)(たとえば)と同等のものを作成する方法がわかりません。0xFFFFFFFF

このコンストラクターを「大きな」色にどのように使用しますか?

編集

明らかにコンストラクターを使用できますが (驚き)、次のような RGBa カラー文字列の解析は失敗します。

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

解決策は、解析を行うために BigInteger を使用することです。的外れな質問ですみません!

4

2 に答える 2

5

あなたの質問は間違った方向に向けられていませんが、コンの答えを誤解しているようです:

Java の Integer が常に署名されていることについては正しいですが、これはその数値の情報ビットが少ないという意味ではありません。

色を作成する場合:

new Color(255, 255, 255, 255)

以下を使用するのと同じです。

new Color(0xFFFFFFFF, true)

または使用:

new Color(0b11111111111111111111111111111111, true)

0xFFFFFFFF実際-1には ですが、これはビットのいずれかが変化するという意味ではありません。それは単に表現の問題です。はColor、各色成分に必要なビットを切り取るだけです。

したがって、実際には、次を使用して目的の色を作成できます。

Color c = new Color(-1,true);
System.out.println(c);
System.out.println(c.getAlpha());

これにより、次の結果が得られます。

java.awt.Color[r=255,g=255,b=255]
255
于 2013-08-15T03:04:13.183 に答える