[java] Java를 사용하여 16 진수를 RGB로 변환하는 방법은 무엇입니까?

Java에서 16 진수 색상을 RGB 코드로 어떻게 변환 할 수 있습니까? 대부분 Google에서 샘플은 RGB에서 16 진수로 변환하는 방법에 대한 것입니다.



답변

나는 이것이 그것을해야한다고 생각한다.

/**
 *
 * @param colorStr e.g. "#FFFFFF"
 * @return
 */
public static Color hex2Rgb(String colorStr) {
    return new Color(
            Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
            Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
            Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
}


답변

실제로이 작업을 수행하는 더 쉬운 (내장) 방법이 있습니다.

Color.decode("#FFCCEE");


답변

public static void main(String[] args) {
    int hex = 0x123456;
    int r = (hex & 0xFF0000) >> 16;
    int g = (hex & 0xFF00) >> 8;
    int b = (hex & 0xFF);
}


답변

들어 안드로이드 개발, 내가 사용 :

int color = Color.parseColor("#123456");


답변

다음은 RGB 및 RGBA 버전을 모두 처리하는 버전입니다.

/**
 * Converts a hex string to a color. If it can't be converted null is returned.
 * @param hex (i.e. #CCCCCCFF or CCCCCC)
 * @return Color
 */
public static Color HexToColor(String hex)
{
    hex = hex.replace("#", "");
    switch (hex.length()) {
        case 6:
            return new Color(
            Integer.valueOf(hex.substring(0, 2), 16),
            Integer.valueOf(hex.substring(2, 4), 16),
            Integer.valueOf(hex.substring(4, 6), 16));
        case 8:
            return new Color(
            Integer.valueOf(hex.substring(0, 2), 16),
            Integer.valueOf(hex.substring(2, 4), 16),
            Integer.valueOf(hex.substring(4, 6), 16),
            Integer.valueOf(hex.substring(6, 8), 16));
    }
    return null;
}


답변

16 진수 색상 코드는 #RRGGBB입니다.

RR, GG, BB는 0-255 범위의 16 진수 값입니다.

X와 Y가 16 진수 문자 0-9A-F, A = 10, F = 15 인 RR XY를 호출하겠습니다.

10 진수 값은 X * 16 + Y입니다.

RR = B7이면 B의 10 진수는 11이므로 값은 11 * 16 + 7 = 183입니다.

public int[] getRGB(String rgb){
    int[] ret = new int[3];
    for(int i=0; i<3; i++){
        ret[i] = hexToInt(rgb.charAt(i*2), rgb.charAt(i*2+1));
    }
    return ret;
}

public int hexToInt(char a, char b){
    int x = a < 65 ? a-48 : a-55;
    int y = b < 65 ? b-48 : b-55;
    return x*16+y;
}


답변

다음과 같이 간단하게 할 수 있습니다.

 public static int[] getRGB(final String rgb)
{
    final int[] ret = new int[3];
    for (int i = 0; i < 3; i++)
    {
        ret[i] = Integer.parseInt(rgb.substring(i * 2, i * 2 + 2), 16);
    }
    return ret;
}

예를 들어

getRGB("444444") = 68,68,68
getRGB("FFFFFF") = 255,255,255