I'm looking for a way to convert a BigInteger into a very short String (shortest possible). The conversion needs to be reversible. The security of the conversion is not a big deal in this case. Would anyone have recommendations or samples of how they would go about solving this problem?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
One easy way is to use BigInteger.toString(Character.MAX_RADIX)
. To reverse, use the following constructor: BigInteger(String val, int radix)
.
回答2:
You can use a Base64 encoding. Note that this example uses 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);
prints:
4143222334431546643677890898767548679452
DC0DmJRYaAn2AVdEZMvmhRw=
4143222334431546643677890898767548679452