在Java中将BigInteger转换为Shorter String

Dav*_*ple 5 java string biginteger

我正在寻找一种方法将BigInteger转换为非常短的字符串(尽可能短).转换需要是可逆的.在这种情况下,转换的安全性并不是什么大问题.有人会有他们如何解决这个问题的建议或样本吗?

Chr*_*sch 8

您可以使用Base64编码.请注意,此示例使用Apache commons-codec:

BigInteger number = new BigInteger("4143222334431546643677890898767548679452");
System.out.println(number);

String encoded = new String(Base64.encodeBase64(number.toByteArray()));
System.out.println(encoded);

BigInteger decoded = new BigInteger(Base64.decodeBase64(encoded));
System.out.println(decoded);
Run Code Online (Sandbox Code Playgroud)

打印:

4143222334431546643677890898767548679452
DC0DmJRYaAn2AVdEZMvmhRw=
4143222334431546643677890898767548679452
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 7

一种简单的方法是使用BigInteger.toString(Character.MAX_RADIX).要反转,请使用以下构造函数:BigInteger(String val, int radix).