試圖做到這一點十六進制爲int在Java
int temp = Integer.parseInt("C050005C",16);
,如果我減少的數字之一,它轉換,但沒有其他的十六進制數字時,我得到一個數字格式異常號格式異常。爲什麼以及如何解決這個問題?
試圖做到這一點十六進制爲int在Java
int temp = Integer.parseInt("C050005C",16);
,如果我減少的數字之一,它轉換,但沒有其他的十六進制數字時,我得到一個數字格式異常號格式異常。爲什麼以及如何解決這個問題?
這會導致整數溢出,因爲整數總是用Java簽名。從documentation of that method(重點煤礦):
如果發生以下任一情況
NumberFormatException
類型的則拋出異常。
它將融入一個未符號整數,雖然。但在Java中這不是選項。
所以在這裏你最好的選擇可能會使用long
,然後只把低4個字節的那麼長成一個int:
long x = Long.parseLong("C050005C", 16);
int y = (int)(x & 0xffffffff);
也許你甚至可以刪除位元「與」在這裏,但我現在無法測試。但是,這可能會縮短到
int y = (int)Long.parseLong("C050005C", 16);
C050005C是3226468444小數,這比Integer.MAX_VALUE。它不適合於int
。
帶符號整型的範圍從0x7FFFFFFF到-0x80000000。
使用此:
long temp = Long.parseLong("C050005C",16);