簡體   English   中英

為什么我用這個Integer.parseInt(x,y)得到一個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.

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