【问题标题】:NumberFormatException: Invalid int as a result of converting string containing binary digita to decimalNumberFormatException:将包含二进制数字的字符串转换为十进制导致的 int 无效
【发布时间】:2016-04-04 02:30:28
【问题描述】:

我遇到了这个问题,我的 Java 字符串包含无法转换为等效十进制数字的二进制数字。

问题标题中的错误是由以下代码引起的:

int decimalValue = Integer.parseInt("001001000110000111001001000111000110001010001011",2);
        System.out.println("Ciphertext :\t"+decimalValue); 

但是,当我使用较小的二进制数字字符串(如“1101”)进行测试时,程序运行良好。我在这里做错了吗?

【问题讨论】:

  • 整数有最大值。我猜你已经超过了这个值。不过,这只是一个猜测。
  • 你会如何建议我继续使用 BigInteger?如果它有效,你能放一个演示 poc,我会将你的标记为答案!谢谢!

标签: java string int parseint


【解决方案1】:

是的。您正在尝试将超过 32 位的数据解析为 int。您需要很长的(根据您的输入)类似

long decimalValue = Long.parseLong(
        "001001000110000111001001000111000110001010001011", 2);

这是40002404508299Integer.MAX_VALUE2147483647)。

【讨论】:

  • Integer.MAX_MAX_VALUE 我认为是一个错字。
  • @Gendarme 错字已修复。谢谢。
猜你喜欢
  • 2011-08-11
  • 2013-11-09
  • 2013-11-24
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多