2014-11-21 58 views
0

我在寫這沒有問題:(它也不會給出任何錯誤)如何從一個字符串解析一個hex-int到一個Integer?

int hex = 0xFFFFFFFF; 

的整數都必須有一個alpha值也!

當我嘗試這樣做:

Integer hex = Integer.parseInt("0xFFFFFFFF"); 
// Or I try this: 
Integer hex = Integer.parseInt("FFFFFFFF"); 

我得到一個java.lang.NumberFormatException: For input string: "0xFFFFFFFF"拋出!

爲什麼這不起作用?

我猜測,有一些其他的方式來解析十六進制整數,我只是沒有意識到,我真的需要能夠從我正在製作的程序字符串解析十六進制。

+1

作爲一個側面說明,你應該用'INT六角去= ...'而不是'Integer hex = ...'。大寫的是對象形式,而不是原始形式。雖然兩者都可以工作,但試圖將'Integer'用作'int'將會強制Java重複取消箱子和重新箱子,減慢你的應用並佔用更多的內存,這兩者都不是一個好主意。這也不是很好的編碼習慣。 – 2014-11-21 17:06:50

回答

1

其實是有一個獨立的功能,你可以定義基數:

https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String,%20int)

的Integer.parseInt(X)只是調用的Integer.parseInt(X,10),所以你必須指定一個基數10號。

爲了解析十六進制字符串,你只需要使用下面的(注意,0x前綴是不允許的):

Integer.parseInt("FFFFFFF", 16); 
+0

非常感謝!這會幫助我很多:) – bernhardkiv 2014-11-21 17:16:51