Convert BigInteger to Shorter String in Java

2019-02-18 09:44发布

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?

2条回答
何必那么认真
2楼-- · 2019-02-18 10:04

One easy way is to use BigInteger.toString(Character.MAX_RADIX). To reverse, use the following constructor: BigInteger(String val, int radix).

查看更多
冷血范
3楼-- · 2019-02-18 10:05

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
查看更多
登录 后发表回答