Конвертировать BigInteger в более короткую строку в Java - PullRequest
4 голосов
/ 19 апреля 2011

Я ищу способ конвертировать BigInteger в очень короткую строку (максимально короткую). Преобразование должно быть обратимым. Безопасность преобразования не имеет большого значения в этом случае. Есть ли у кого-нибудь рекомендации или примеры того, как они решат эту проблему?

Ответы [ 2 ]

8 голосов
/ 19 апреля 2011

Вы можете использовать кодировку 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);

печать:

4143222334431546643677890898767548679452
DC0DmJRYaAn2AVdEZMvmhRw=
4143222334431546643677890898767548679452
6 голосов
/ 19 апреля 2011

Один простой способ - использовать BigInteger.toString(Character.MAX_RADIX). Чтобы повернуть вспять, используйте следующий конструктор: BigInteger(String val, int radix).

...