2013-01-19 60 views
2

我有一個十六進制數字(一種顏色)存儲在字符串中,如下所示:「ff62e6b8」。 我需要將其轉換回整數,以便我可以再次使用它作爲顏色值。 我曾嘗試以下:十六進制字符串到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

如果你想生成hexColor代碼從colorVal當時使用:

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

通過這一點,你會得到hexColor = #62E6B8

謝謝。

+0

謝謝你,這就像一個魅力! –

+0

@BrunoCarvalhal你永遠是受歡迎的。 –

+0

@BrunoCarvalhal我剛剛編輯了我的解決方案,這將在需要的情況下更有用。謝謝。 –

8

FF62E6B8是十進制的4284671672。這只是大到把它放進int。在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); 

應該做的工作

相關問題