我有一個十六進制數字(一種顏色)存儲在字符串中,如下所示:「ff62e6b8」。 我需要將其轉換回整數,以便我可以再次使用它作爲顏色值。 我曾嘗試以下:十六進制字符串到int轉換不能正常工作
Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");
但是,所有的這些方法拋出異常。我在這裏錯過了什麼嗎?
我有一個十六進制數字(一種顏色)存儲在字符串中,如下所示:「ff62e6b8」。 我需要將其轉換回整數,以便我可以再次使用它作爲顏色值。 我曾嘗試以下:十六進制字符串到int轉換不能正常工作
Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");
但是,所有的這些方法拋出異常。我在這裏錯過了什麼嗎?
嘗試這樣的:
int colorVal = Color.parseColor("#ff62e6b8");
例子:
myLayout.setBackgroundColor(Color.parseColor("#ff62e6b8"));
通過這一點,你會得到colorVal = -10295624
。
如果你想生成hexColor代碼從colorVal當時使用:
String hexColor = String.format("#%06X", (0xFFFFFF & colorVal));
通過這一點,你會得到hexColor = #62E6B8
。
謝謝。
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");
謝謝你,這解釋了很多。但是,你可以使用長值作爲顏色值嗎?有沒有辦法將字符串「ff62e6b8」轉換回整數0xff62e6b8? –
我認爲你正在尋找Pratik Sharma的解決方案:) –
@AdamSznajder我剛剛編輯了我的解決方案,在需要的情況下會更有幫助,謝謝你提供我的名字。 :) –
String hex = "1B";
int val = Integer.parseInt(hex, 16);
這是正確的轉換。
第一個將是很好的一個
但ff62e6b8超過int的長度(32位 - 籤),這就是爲什麼一個異常。
Long l = Long.parseLong("ff62e6b8", 16);
應該做的工作
謝謝你,這就像一個魅力! –
@BrunoCarvalhal你永遠是受歡迎的。 –
@BrunoCarvalhal我剛剛編輯了我的解決方案,這將在需要的情況下更有用。謝謝。 –