2012-07-23 85 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