BigInteger.méthode toString est la suppression de 0

Je suis en train de générer la somme MD5 à l'aide de MessageDigest.
Et je vais avoir des code suivant.

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

Cela renvoie pas 32 chaîne de caractères mais un 31 chaîne de caractères 8611c0b0832bce5a19ceee626a403a7

Chaîne attendue est 08611c0b0832bce5a19ceee626a403a7

0 est manquant dans la sortie.

J'ai essayé l'autre méthode

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

Et la sortie est aussi prévue.

J'ai vérifié le doc et Entier.toString ne la conversion selon elle

Les chiffres de mappage de caractères fournis par Caractère.forDigit est
utilisé, et d'un signe moins est ajouté le cas échéant.

et dans le Caractère.forDigit methos

Le chiffre argument est valable que si 0 <=chiffres < radix.

Peut-on me dire comment les deux méthodes sont différentes et pourquoi 0 est supprimé?

  • Dites-vous que BigInteger.toString() est supposé afficher un zéro?
  • Tout ce que je demande est pourquoi toString est d'enlever le premier 0. ?
  • Ouais, eh bien, et je reçois un vote négatif, comme si il n'est pas utile. Boohoo
  • Je ne comprends pas ce que vous demandez. Comment est toString censé savoir que vous vous attendez à un 0? BigInteger magasins juste un nombre; il ne sait pas combien de zéros que vous êtes enceinte.
  • Penser d'une autre façon: qu'attendez-vous de new BigInteger("27").toString()? Combien de zéros?