public class DecRle { public static void main(String []args) { byte []code = { 52, // longueur d'une ligne 5,1,2,1,14,1,2,1,24,1, // alternance longueur blanc, longueur noir 2,1,8,1,8,1,8,1,21,1, // chaque début de ligne démarre en blanc 1,1,10,1,6,1,10,1,15,6, // les grandes longueurs >30 sont codées 31, puis 1,1,10,1,6,1,10,1,15,6, // le reste de la longueur, Par ex: 33 est codé 2,1,8,1,8,1,8,1,21,1, // 31, 2 (pas de changement de longueur!) 5,1,2,1,14,1,2,1,24,1, // 65 serait codé : 31, 31, 1, etc. 31, 20, 1, 0, 31, 21}; int longueurLigne = code[0]; boolean couleur = false; int nombreDeCaracteresAffiches = 0; for (int i=1; i<code.length; i++) { int nombre = code[i]; // longueur de blancs ou noirs for (int j=0; j<nombre; j++) { System.out.print(couleur?'*':' '); // un blanc ou un noir nombreDeCaracteresAffiches++; } if (nombreDeCaracteresAffiches==longueurLigne) { // nouvelle ligne... System.out.println(); couleur = false; nombreDeCaracteresAffiches = 0; } else { if (nombre!=31) // codage spécial pour les grandes longueurs... couleur = !couleur; } } } }