簡體   English   中英

將十六進制值(0x45E213)存儲為整數

[英]store hex value (0x45E213) in an integer

在我的應用程序中,我使用轉換器從3個值> RGB顏色和Hex值創建。 我在運行時使用它在我的應用程序中設置漸變背景。

現在這是以下問題。 轉換器的結果是(String) #45E213 ,這不能存儲在整數中。 但是當你創建一個整數時

int hex = 0x45E213;

它確實工作正常,這不會給出錯誤。

現在我知道了這一點,我將#替換為0x ,並嘗試將其從String轉換為Integer。

int hexToInt = new Integer("0x45E213").intValue();

但是現在我得到了numberFormatException ,因為在轉換時,它會不同意字符E

我怎么解決這個問題? 因為我真的需要它作為整數或Java / Eclipse不會在它的方法中使用它。

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

帶有字符串的Integer構造函數與帶有基數10的parseInt的行為相同。您可能希望String.parseInt帶有基數16。

Integer.parseInt("45E213", 16)

或者切斷0x

Integer.parseInt("0x45E213".substring(2), 16);

要么

Integer.parseInt("0x45E213".replace("0x",""), 16);

鮮為人知的Integer.decode(String)在這里可能很有用。 請注意,它也會以八進制為前導零,你可能不想要它,但如果你正在尋找便宜又開朗的東西......

int withHash = Integer.decode("#45E213");
System.out.println(Integer.toHexString(withHash));

int withZeroX = Integer.decode("0x45E213");
System.out.println(Integer.toHexString(withZeroX));

產量

45e213
45e213

此方法接受您的String,您可以使用Color.parseColor(String)但您需要用#替換0x前綴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM