如何将非常长的String更改为Integer

时间:2018-03-31 06:42:21

标签: java

如何使这项工作?

long l = Long.valueOf(Integer.parseInt(DatatypeConverter.printHexBinary(myBytes), 16));
textField.setText("" + l);

投掷NumberFormatException因为它太长了。

2 个答案:

答案 0 :(得分:3)

您的问题可能是您尝试先将号码转换为int,然后转换为long。这仅适用于最多约20亿的数字,因为这是int中最大的数字。

如果您的号码符合long(最多约19位),而不是int,那么您应该使用parseLong Long方法} class,而不是parseInt

long myLong = Long.parseLong(myHexString, 16);

但是,如果long的值太大,则您需要BigInteger类。

BigInteger myInteger = new BigInteger(myHexString, 16);

仔细选择。 long值往往比BigInteger值表现得更好,因此如果您知道您的价值无法超过最大可能值long,那么您可能希望选择long

答案 1 :(得分:1)

请在这种情况下使用BigInteger。它的性能很慢,但完全解决了目的

BigInteger的构造函数接受String并创建实例,其值传递为String:

BigInteger(String val)

您可以按照此处的说明操作: https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html