2

私は以下を生成するjson応答を持っています:

ledColor : "0xff00ff00"-> これは緑色を表します。

Java / Androidで次のことを達成するにはどうすればよいですか。

を含む文字列を"0xff00ff00"int にする0xff00ff00

前もって感謝します。

4

4 に答える 4

2

16 進文字列の int 値を取得するには、Integer.decodeを使用します。

例えば:

int val = Long.decode("0xff00ff00").intValue();
System.out.println(val);

-16711936 が出力されます。

于 2013-04-24T12:08:00.237 に答える
2

予想される結果の大きさに応じて、Long.decodeまたは関数を使用します。Integer.decode

于 2013-04-24T12:08:06.683 に答える
2

使用Long.decodeしてから int にキャストします。

    long foo = Long.decode("0xff00ff00");
    int bar = (int)foo;
    System.out.println("As int: " + bar);
于 2013-04-24T12:51:05.927 に答える
1

注意 - Android API は、Java が「符号なし」整数の概念を明示的にサポートしていないという事実を「無視」しているように見えることに注意してください。

次のリンクを参照してください。

ここで、ある意味で少し説明する非常に単純なデモアプリを作成しました。それが役に立てば幸い!(自己責任!)

package com.test;

public class AgbUtil {

    public static int argbFromString(String argbAsString) throws Exception {

        if (argbAsString == null || argbAsString.length() < 10)
            throw new Exception("ARGB string invalid");

        String a =  argbAsString.substring(2, 4);
        String r =  argbAsString.substring(4, 6);
        String g =  argbAsString.substring(6, 8);
        String b =  argbAsString.substring(8, 10);

        System.out.println("aStr: " + a + " rStr: " + r + " gStr: " + g + " bStr: " + b);

        int aInt = Integer.valueOf(a, 16);
        int rInt = Integer.valueOf(r, 16);
        int gInt = Integer.valueOf(g, 16);
        int bInt = Integer.valueOf(b, 16);

        System.out.println("aInt: " + aInt + " rInt: " + rInt + " gInt: " + gInt + " bInt: " + bInt);

        // This is a cheat because int can't actually handle this size in Java - it overflows to a negative number
        // But I think it will work according to this: http://www.developer.nokia.com/Community/Discussion/showthread.php?72588-How-to-create-a-hexidecimal-ARGB-colorvalue-from-R-G-B-values
        // And according to this: http://www.javamex.com/java_equivalents/unsigned.shtml
        return (aInt << 24) + (rInt << 16) + (gInt << 8) + bInt; 
    }

    public static void main(String[] args) {
        System.out.println("Testing");
        try {
        System.out.println("0xff00ff00: " + argbFromString("0xFF00ff00")); // Green
        System.out.println("0xffff0000: " + argbFromString("0xffff0000")); // Red
        System.out.println("0xff0000ff: " + argbFromString("0xff0000ff")); // Blue
        System.out.println("0xffffffff: " + argbFromString("0xffffffff")); // White
        System.out.println("0xff000000: " + argbFromString("0xff000000")); // Black
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

私はAndroidを知らないので、ここで完全に間違っている可能性があります!!

于 2013-04-24T13:35:38.413 に答える