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

标签 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

最佳答案

您所做的事情是正确的...假设 Base32 字符串来自于调用调用获得的 Base32 编码字节数组 BigInteger.toByteArray()

BigInteger(byte[] val) 并不真正采用任意字节的数组。它采用 BigIntegerbyte[] 表示形式。此外,它假设最高有效字节位于 val[0] 中)。

关于java - 如何将字符串从基数 32 解码为 BigInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269861/

相关文章:

java - BigInteger(long) 在 BigInteger 中具有私有(private)访问权限

java - Javascript和Java进行相同的验证

java - doInBackground 不起作用

java - 当 "n"的值较大时,递归函数运行时间过长

javascript - javascript 中的大整数(大于 2^53-1)

java - 使用 Base32 对字符串进行编码和解码

c# - 编码数字,z-base-32 的 C# 实现或其他?

javascript - 小字符串的快速开源校验和

java - RxJava : Dynamic set of observables

java 。类的类型与对象