Метод BigInteger.toString удаляет ведущие 0

Я пытаюсь сгенерировать сумму MD5, используя MessageDigest. И у меня есть следующий код.

byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
output = bigInt.toString(16);

Это возвращает не 32-символьную строку, а 31-символьную строку 8611c0b0832bce5a19ceee626a403a7

. Ожидаемая строка08611c0b0832bce5a19ceee626a403a7

В выводе отсутствует начальный 0.

Я попробовал другой метод

byte[] md5sum = digest.digest();
output = new String(Hex.encodeHex(md5sum));

И результат ожидаемый.

Я проверил документ, и Integer.toString делает преобразование в соответствии с ним

The digit-to-character mapping provided by Character.forDigit is used, and a minus sign is prepended if appropriate.

и в методе Character.forDigit

The digit argument is valid if 0 <=digit < radix.

Может ли кто-нибудь сказать мне, чем отличаются два метода и почему удаляется ведущий 0?

25
задан Anuj Balan 23 April 2012 в 06:39
поделиться