public static String decoder(long[] message) {
        String texte = "";
        // On traite chaque bloc de message
        for (int k = 0; k < message.length; k++) {
            String strEnc = "" + message[k];
            // On ajuste la longueur en ajoutant des espaces à gauche
            while (strEnc.length() < LONGUEUR_CODE_1_CAR * LONGUEUR_MORCEAU) {
                strEnc = "0" + strEnc;
            }
            // On étudie chaque groupe de deux chiffres
            for (int j = 0; j < strEnc.length(); j += LONGUEUR_CODE_1_CAR) {
                String carEnc = strEnc.substring(j, j + LONGUEUR_CODE_1_CAR);
                int valeur = Integer.parseInt(carEnc);
                // On vérifie que chaque caractère pouvait être encodé
                if (valeur < 1 || 27 < valeur) {
                    throw new IllegalArgumentException(
                            "Le code contient des valeurs non gérées "
                            + "par le système de décodage");
                }
                char c = (char) (valeur - 1 + 'A');
                if (valeur == 27) {
                    c = ' ';
                }
                texte += c;
            }
        }
        return texte;
    }