1

色intを作成するためにアルファバイトを追加するr、g、b値から色値を作成しようとしています。

しかし、私は使用してエラーが発生しています:

Integer.valueOf(colorStr、16);

colorStrは私が作成した文字列です。エラーを送信する値は、"0XFF2f6b55" 無効なintを送信することです。

4

2 に答える 2

5

Javaの整数は、-2^31から2^31-1(2147483647)までの値をカバーします。値は10進数で(4281297749)であり、javaの整数には大きすぎます。

Javaのlongは、-2^63から2^63-1のはるかに高い範囲をカバーします。これにはあなたの価値が含まれているので、longを使用して使用Long.valueOf(colorStr, 16)に切り替えることをお勧めします。(使用している値が整数値の範囲外である場合に有効になる提案)。

あなたは気づいているように私には思えましたが、そうでない場合に備えて。文字列値の一部である場合は削除する0x必要があります。そのままにしておくと無効な形式の例外が発生するためです。

于 2012-11-23T23:42:16.500 に答える
1

文字列はsignedintには大きすぎます-から-0x80000000になり0x7FFFFFFFます。試す:

int i = (int) Long.parseLong(colorStr.substring(2), 16);

これは負の結果にintなりますが、これはあなたが望むものではないかもしれません。(色を操作する場合は、赤、緑、青、およびアルファコンポーネントの値のタプルを操作する方がおそらく便利です。)

valueOf()またはparseInt()/はプレフィックスparseLong()を認識しません0x。プレフィックスを削除する必要があります。

于 2012-11-23T23:41:54.270 に答える