2012-07-23 63 views
2

我在哪裏可以得到一個智能號分析器,可以讀取,比方說一個數字串...號碼解析庫

  • 整數形式:-12345
  • 十進制形式:123.45
  • 指數形式:15E-24
  • 十六進制:#CAFEBABE
  • 二進制:b01100101

...並得到我一個足夠表示(從一個byte如果它適合,並且如果它不到GargantuanDouble)?

我現在在Java中思考(Android),所以如果是Java,那就更好了;但我願意從另一種語言移植一個足夠小的圖書館。

+1

我可以知道它爲什麼被低估嗎? – slezica 2012-07-23 05:36:50

+1

巨大雙倍? :) – dfb 2012-07-23 06:10:03

+0

FWIW - 關於足夠的代表性,Java是靜態類型的,而且Number接口有些沒用,你或多或少必須知道你在提前分析什麼類型的小型數據。 – dfb 2012-07-23 06:16:39

回答

0

除了指數形式,你可以處理每個案例並使用Integer.parseInt(String a,int radix);

3

假設您可以分離令牌,則可以使用Integer.decode()來解碼數字。

字符以下(可選的)負號 和/或基數說明符(「0X」,「0X」,「#」,或前導零)通過的Integer.parseInt方法解析爲 與指定的基數(10,16或 8)。這個字符序列必須表示一個正值或一個NumberFormatException將被拋出。如果指定String的第一個 字符是負號,則結果將被否定。字符串中不允許有空格 字符。

例如,

Integer.decode("0xabcf123"); // hex 
Integer.decode("07651");  // octal 
Integer.decode("123459"); // decimal 
+0

不知道那種方法!這涵蓋了大部分的麻煩,謝謝 – slezica 2012-07-23 07:10:41

+1

@uʍopǝpısdn,它不支持二進制,順便說一句。你必須使用'Integer.parseInt(value,radix)' – st0le 2012-07-23 07:35:11