5

私のアプリケーションでは、コンバーターを使用して、3つの値>RGBから16進値を作成しました。これを使用して、実行時にアプリケーションでグラデーションの背景を設定します。

これが次の問題です。コンバーターの結果はであり(String) #45E213、これを整数で格納することはできません。しかし、整数を作成すると、

int hex = 0x45E213;

正しく動作し、エラーは発生しません。

これを知ったので、toを置き換えて、#String0xからIntegerに変換しようとしました。

int hexToInt = new Integer("0x45E213").intValue();

しかし、今私はnumberFormatException、変換中に、それが文字と一致しないので、を取得しEますか?

どうすればこれを解決できますか?整数として本当に必要なので、Java/Eclipseはそのメソッドでそれを使用しません。

4

3 に答える 3

13

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

文字列を使用する Integer コンストラクターは、基数 10 の parseInt と同じように動作します。おそらく、基数 16 の String.parseInt が必要です。

Integer.parseInt("45E213", 16)

または 0x を切り捨てる

Integer.parseInt("0x45E213".substring(2), 16);

また

Integer.parseInt("0x45E213".replace("0x",""), 16);
于 2012-03-17T11:09:55.890 に答える
7

ここでは、あまり知られていない Integer.decode(String) が役立つ場合があります。また、先頭のゼロを 8 進数として処理することに注意してください。

int withHash = Integer.decode("#45E213");
System.out.println(Integer.toHexString(withHash));

int withZeroX = Integer.decode("0x45E213");
System.out.println(Integer.toHexString(withZeroX));

出力

45e213
45e213
于 2012-03-17T11:23:57.347 に答える
4

このメソッドは、使用できる文字列を受け入れますが、プレフィックスを次のColor.parseColor(String)ように置き換える必要があります0x#

于 2012-03-17T11:12:19.753 に答える