【发布时间】:2012-07-01 11:04:59
【问题描述】:
我尝试了以下代码:
import java.math.BigInteger;
import org.apache.commons.codec.binary.Base32;
import org.junit.Test;
public class Sandbox
{
@Test
public void testSomething() {
String sInput = "GIYTINZUHAZTMNBX";
BigInteger bb = new BigInteger(new Base32().decode(sInput));
System.out.println("number = " + bb);
}
}
输出如下:
number = 237025977136523702055991
使用this website to convert between base 32 我得到的结果与实际输出不同。根据我从网站上得到的结果,这是我希望看到的结果:
expected output = 2147483647
知道为什么会这样吗?
编辑:
请原谅我故意尝试转换 2^31-1 造成混乱。
使用我之前链接的转换网站,我更改了输入:
String sInput = "GE4DE===";
预期输出:
number = 182
实际输出:
number = 3225650
【问题讨论】:
-
那个网站吐出 2^31-1 所以我高度怀疑他们在内部做 32 位有符号数学,当然溢出。在没有实际计算任何东西的情况下,我会说你得到的结果看起来更像是一个合理的结果,而不是 2^31-1
-
不是一个真正的问题。您发布的所有字符串都不是以 32 为基数的。最后一个看起来像 base-64。
标签: java biginteger base32