[英]Why do i get for an Integer.parseInt(String) an numberformatexception?
[英]Why do I get a NumberFormatException with this Integer.parseInt(x, y)?
我的代碼很簡單:
int idec = Integer.parseInt(value, 16);
當我輸入值“01dae610”時,我正確地得到“31122960”。 當我輸入值“d149e510”時,我得到一個java.lang.NumberFormatException。 正確的值是:“3511280912”。
我不知道為什么會這樣。 有人可以幫忙嗎?
因為那超出了int
的范圍。 請改用long
/ Long
。
int
是用Java 簽名的 - 所以最大值是2 31 - 1。
如果使用Long.parseLong(value, 16)
您將獲得所需的值。 如果您樂意獲得正確的位模式,則可以轉換回int
,但會將其解釋為負值。
僅僅因為它超出了int
的范圍。 您應該使用long
數據類型。
Integer.MAX_VALUE
是2147483647,低於您期望的值。 所以這個字符串不代表任何可以解析成int
。 因此例外。
從這里 :
int數據類型是32位帶符號的二進制補碼整數。 它的最小值為-2,147,483,648,最大值為2,147,483,647(含)。
3,511,280,912> 2,147,483,647,它解釋了NumberFormatException
。
但是,你可以使用很long
。 從同一頁面:
長數據類型是64位帶符號的二進制補碼整數。 它的最小值為-9,223,372,036,854,775,808,最大值為9,223,372,036,854,775,807(含)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.