我正在寻找一种将BigInteger转换为非常短的字符串(尽可能短)的方法。转换需要是可逆的。在这种情况下,转换的安全性不是很重要。是否有人可以推荐或提供解决此问题的示例?
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);
打印:
4143222334431546643677890898767548679452
DC0DmJRYaAn2AVdEZMvmhRw=
4143222334431546643677890898767548679452
一种简单的方法是使用 BigInteger.toString(Character.MAX_RADIX)
。要进行反转,请使用以下构造函数:BigInteger(String val, int radix)
。
Character.MAX_RADIX
。 - Bart Kiers