Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的HSVToColor工作起来有点奇怪_Java_Android - Fatal编程技术网

Java Android中的HSVToColor工作起来有点奇怪

Java Android中的HSVToColor工作起来有点奇怪,java,android,Java,Android,这是我的代码,它应该获取一个颜色int,将其转换为HSV,将0.5添加到色调并转换回int。但是在输出中,不是0xFF00FFFF,而是-64768。。。你知道有什么问题吗 int c = 0xFFFF0000; /// RED float[] hsv = new float[3]; Color.colorToHSV( c, hsv ); /// splitting "c" into hsv hsv[0] = hsv[0]+0.5f; /// adding

这是我的代码,它应该获取一个颜色int,将其转换为HSV,将0.5添加到色调并转换回int。但是在输出中,不是0xFF00FFFF,而是-64768。。。你知道有什么问题吗

    int c = 0xFFFF0000;   /// RED
    float[] hsv = new float[3];
    Color.colorToHSV( c, hsv ); /// splitting "c" into hsv
    hsv[0] = hsv[0]+0.5f;  /// adding 0.5 to Hue
    int c1 = Color.HSVToColor( hsv ); /// converting hsv back to int 
    Log.e("color: ", String.valueOf(c1) ); /// outputting new color int
    // should be "0xFF00FFFF" (light bule) , but is  "-64768" hmm...

谢谢

您没有以十六进制打印字符串。 而是打印原始int值


十六进制的值是FFFF0300,这是有意义的。

您没有用十六进制打印字符串。 而是打印原始int值


十六进制中的值是FFFF0300,这很有意义。

我使用以下代码以十六进制字符串格式打印颜色,大小固定(颜色分量为2个字符)


我使用以下代码以十六进制字符串格式打印颜色,大小固定(颜色组件为2个字符)


你说得对!:)现在知道如何将其转换为十六进制整数了吗?使用
Integer.toHexString(c1)
你说得对!:)现在知道如何将其转换为十六进制整数了吗?使用
Integer.toHexString(c1)
一些
Formatter
magic:
String.format(“#%08x”,颜色)
(或大写的
X
)可能快得多(没有
String+=
和更少的方法调用),使用一些
Formatter
magic:
String.format(#%08x),颜色)也可以实现同样的效果
(或大写的
X
)可能快得多(没有
String+=
和更少的方法调用)

public abstract class ColorHelper {

    public static String toARGBString(int color) {
        String ret;

        ret = "#";
        ret += fix(Integer.toHexString(Color.alpha(color)));
        ret += fix(Integer.toHexString(Color.red(color)));
        ret += fix(Integer.toHexString(Color.green(color)));
        ret += fix(Integer.toHexString(Color.blue(color)));

        return ret.toUpperCase();
    }

    private static String fix(String input) {
        if (input.length() == 1) {
            return "0" + input;
        }

        return input;
    }
}