如何将字符串从基数32解码为BigInteger

时间:2012-06-29 22:45:37

标签: java biginteger base32

我尝试了以下代码:

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 个答案:

答案 0 :(得分:1)

你正在做的是正确的...... 假设Base32字符串来自Base32编码你通过调用 BigInteger.toByteArray()获得的字节数组。

BigInteger(byte[] val)并不真正采用任意字节数组。它需要byte[]的{​​{1}}表示。此外,它假设最重要的字节在BigInteger)。

答案 1 :(得分:0)

如果它是32,则X,Y和Z不应该在那里。你确定它不是36号基地吗?