Color.parseColor返回负数

use*_*252 6 android

我刚尝试过这样做

System.out.println("color == " + Color.parseColor("#F5F5F5"));
Run Code Online (Sandbox Code Playgroud)

然后它返回就像

color == -657931
Run Code Online (Sandbox Code Playgroud)

谁知道为什么,拜托?

Rod*_*uin 9

首先,parseColor方法将返回十六进制 的整数表示,F5F5F5实际上是FFF5F5F5+颜色的不透明度.

的十进制值FFF5F5F5就是4294309365然后将其转化为整数,将溢出从而使你那负数.

这是溢出的一个例子

    int i = (int)4294309365L; //4294309365L the decimal representation of FFF5F5F5
    System.out.println(i); //result: -657931
Run Code Online (Sandbox Code Playgroud)


Raw*_*awa 5

它做了它应该做的事情,它是 #F5F5F5 的 int 表示。API 中的此描述说明了为什么颜色在表示为 int 时可以为负数。

http://developer.android.com/reference/android/graphics/Color.html#parseColor(java.lang.String)

简短说明:

                     32bit integer in hex:AARRGGBB
Transparent: Constant Value: 0         (0x00000000) 
      Black: Constant Value: -16777216 (0xff000000)
Run Code Online (Sandbox Code Playgroud)