2011-10-05 40 views
1

請幫我解決這個例外: -NumberFormatException的在InputString

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000"; 
     System.out.println("length is " + strBinary.length()); 
     long intParse=Long.parseLong(strBinary, 2); 
     System.out.println("int parsed is " + intParse); 
     String hexString=Long.toHexString(intParse); 
      System.out.println(hexString); 

輸出與沿NumberFormatException的使用72在解析的Long.parseLong .. 但直到昨天它運行此輸入也絕對沒問題.. 它與長度有什麼關係... 我真的試圖將字符串轉換爲其等價的十六進制值。

請幫助....

回答

3

一個long可容納64位數據。最大值a long可以表示爲9223372036854775807(或2 -1)。您嘗試解析的字符串是比這大很多

可能能夠通過使用BigInteger類,它可以處理任意大小的整數值(當然有效地限制內存)。

+0

但我怎麼然後解析我的進String..I有一個字符串,我想找到等效十六進制的那個。 – AngelsandDemons

+1

@ankit:請花幾分鐘時間閱讀我發佈的鏈接,並嘗試在網上搜索答案。如果您在那之後仍然有問題*,請隨時詢問。 –

+0

我想使用longValue我可以將BigInt轉換爲long,但是我的傳入字符串首先被解析爲Long ...解析它時拋出錯誤.. – AngelsandDemons

1

長是小爲您的目的。你可能想使用的BigInteger對象這樣

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000"; 
BigInteger bigInteger = new BigInteger(strBinary, 2); 
System.out.println(bigInteger.longValue()); //This would give you the long value 
System.out.println(bigInteger.toString(16)); //This would give you the hex string