色intを作成するためにアルファバイトを追加するr、g、b値から色値を作成しようとしています。
しかし、私は使用してエラーが発生しています:
Integer.valueOf(colorStr、16);
colorStr
は私が作成した文字列です。エラーを送信する値は、"0XFF2f6b55"
無効なintを送信することです。
Javaの整数は、-2^31から2^31-1(2147483647)までの値をカバーします。値は10進数で(4281297749)であり、javaの整数には大きすぎます。
Javaのlongは、-2^63から2^63-1のはるかに高い範囲をカバーします。これにはあなたの価値が含まれているので、longを使用して使用Long.valueOf(colorStr, 16)
に切り替えることをお勧めします。(使用している値が整数値の範囲外である場合に有効になる提案)。
あなたは気づいているように私には思えましたが、そうでない場合に備えて。文字列値の一部である場合は削除する0x
必要があります。そのままにしておくと無効な形式の例外が発生するためです。
文字列はsignedintには大きすぎます-から-0x80000000
になり0x7FFFFFFF
ます。試す:
int i = (int) Long.parseLong(colorStr.substring(2), 16);
これは負の結果にint
なりますが、これはあなたが望むものではないかもしれません。(色を操作する場合は、赤、緑、青、およびアルファコンポーネントの値のタプルを操作する方がおそらく便利です。)
valueOf()
またはparseInt()
/はプレフィックスparseLong()
を認識しません0x
。プレフィックスを削除する必要があります。