2

「ff62e6b8」のように、文字列に格納された 16 進数 (色) があります。これを再び整数に変換して、色の値として再度使用できるようにする必要があります。私は次のことを試しました:

Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");

ただし、これらのメソッドはすべて例外を発生させます。ここで何か不足していますか?

4

4 に答える 4

8

FF62E6B8は10進数で4284671672です。に入れるのは単純に大きすぎintます。範囲にint一致する値を格納できます<-2^31 - 1 ; 2^31 - 1>long代わりに使用してみてください:

Long i = Long.parseInt("ff62e6b8", 16);
Long i = Long.valueOf("ff62e6b8", 16);
Long i = Long.decode("ff62e6b8"); 
于 2013-01-19T15:31:04.607 に答える
5

これで試してください:

int colorVal = Color.parseColor("#ff62e6b8");

例 :

myLayout.setBackgroundColor(Color.parseColor("#ff62e6b8"));

これにより、あなたは得るでしょうcolorVal = -10295624

また、colorValからhexColorコードを生成する場合は、次を使用します。

String hexColor = String.format("#%06X", (0xFFFFFF & colorVal));

これにより、あなたは得るでしょうhexColor = #62E6B8

ありがとう。

于 2013-01-19T15:33:41.857 に答える
1

最初のものは良いものだろう

しかし、ff62e6b8 は int (32 ビット - 符号付き) のサイズを超えているため、例外が発生します。

Long l = Long.parseLong("ff62e6b8", 16);

仕事をするべきです

于 2013-01-19T15:36:32.417 に答える
0
String hex = "1B";
int val = Integer.parseInt(hex, 16);

それが正しい変換です。

于 2013-01-19T15:32:09.843 に答える