J'utilise une fonction simple pour multiplier les grands entiers. Parfois, un autre octet de tête zéro est inclus dans la sortie. Pourquoi est-ce arrivé et comment je peux l'empêcher?Numéro zéro dans la multiplication de BigInteger
PS: a et b sont déjà moins de mod
private byte[] multiply(final byte[] a, final byte[] b, final BigInteger mod) {
BigInteger M1 = new BigInteger(1, a);
BigInteger M2 = new BigInteger(1, b);
BigInteger out = M1.multiply(M2).mod(mod);
res = out.toByteArray();
}
pouvez-vous donner des exemples de vos entrées et ce que vous voyez en sortie? ou un exemple de travail sur ideone.com? – Tschallacka
Oui, bien sûr. J'ai préparé le code et vous pouvez jeter un oeil ici [link] (http://ideone.com/xKgCH6) m1 * m2 retour résultat invalide, m3 * m4 produire une sortie correcte. @Tschallacka – Bob
@Bob vous devez inclure votre code dans votre question elle-même (en utilisant le bouton d'édition). –