2013-01-19 2 views
2

문자열에 16 진수 (색상)가 저장되어 있습니다 : "ff62e6b8". 색상 값으로 다시 사용할 수 있도록 이것을 다시 정수로 변환해야합니다. 나는 다음과 같은 시도 :16 진수 문자열에서 int 변환이 올바르게 작동하지 않습니다.

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

그러나 이러한 방법의 모든 예외를 발생. 내가 여기서 뭔가를 놓치고 있니?

답변

5

시도 :

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

예 : 이로써

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

당신은 colorVal = -10295624을 얻을 것이다. 당신이 다시 colorVal에서 hexColor 코드를 생성 할 경우

그리고 이것을 사용 :

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

을 이것에 의하여 당신이 hexColor = #62E6B8을 얻을 것이다.

감사합니다.

+0

고마워요, 그건 매력처럼 작동합니다! –

+0

@ BrunoCarvalhal 언제든지 환영합니다. –

+0

@BrunoCarvalhal 방금 필요한 경우 더 유용한 내 솔루션을 편집했습니다. 감사. –

8

FF62E6B8은 10 진수로 4284671672입니다. 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"); 
+0

감사합니다 작업을 수행해야합니다. 그러나 긴 값을 색상 값으로 사용할 수 있습니까? 문자열 "ff62e6b8"을 정수 0xff62e6b8로 변환하는 방법이 있습니까? –

+0

나는 Pratik Sharma 솔루션을 찾고 있다고 생각한다. :) –

+0

@AdamSznajder 방금 필요할 때 더 도움이 될 내 솔루션을 편집했고 내 이름을 제안 해 주셔서 감사합니다. :) –

0
String hex = "1B"; 
int val = Integer.parseInt(hex, 16); 

합니다. 이와

1

첫 번째는 좋은

것하지만 ff62e6b8은 INT의 크기 (32 비트 - 서명)을 초과 예외가 발생 그 이유는.

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

많이 설명

관련 문제