 
 
 
 
 
 
 
  
Il est usuel lors de chiffrements de convertir les messages en
nombres. Un message "abcdfg" peut se représenter par la suite de
nombres " 
  
  
  
  
  ". Vous remarquez que l'on numérote
les lettres à partir de
". Vous remarquez que l'on numérote
les lettres à partir de  de sorte qu'un message puisse être
représenté par un nombre en base
 de sorte qu'un message puisse être
représenté par un nombre en base  sans que des
 sans que des  apparaissent
dans sa représentation. La formule générale permettant
de calculer la valeur en base
 apparaissent
dans sa représentation. La formule générale permettant
de calculer la valeur en base  d'un nombre représenté en base
 d'un nombre représenté en base  s'obtient en multipliant les chiffres par des puissances successives
de
s'obtient en multipliant les chiffres par des puissances successives
de  . Par exemple :
. Par exemple : 
 . Ce qui se
réécrit
. Ce qui se
réécrit 
 . Le message "abcdfg" correspond
donc à la valeur
. Le message "abcdfg" correspond
donc à la valeur 
 en base
 en base
 . On simplifie les algorithmes de conversion en inversant l'ordre
des lettres, donc en calculant
. On simplifie les algorithmes de conversion en inversant l'ordre
des lettres, donc en calculant 
 . On effectue la conversion vers la base
. On effectue la conversion vers la base  en
effectuant des division successives par
 en
effectuant des division successives par  . On retrouve le premier
chiffre en calculant
. On retrouve le premier
chiffre en calculant 
 . On divise
ensuite
. On divise
ensuite  par
 par  et on procède de même pour obtenir les chiffres
suivants. On a donc
 et on procède de même pour obtenir les chiffres
suivants. On a donc 
 , le deuxième
chiffre est
, le deuxième
chiffre est 
 . On continue :
. On continue :  
 , le
troisième chiffre est donc
, le
troisième chiffre est donc 
 ... On s'arrête que le
nombre à convertir est nul.
... On s'arrête que le
nombre à convertir est nul.
#include<stdio.h>
#define BASE 27
/************************************************/
/*
  Retourne le rang de la lettre a dans l'alphabet.
  'a' est de rang 1, 'b' de rang 2, etc.
*/
char rankOfLetter(char a)
{
  return 0;
}
/************************************************/
/*
  Retourne la lettre de rang r dans l'alphabet.
*/
char letterOfRank(char r)
{
  return 0;
}
/************************************************/
/*
  Convertit le nombre nb en base 27, place 
  les lettres calculees dans la chaine c.
  (ne pas oublier le 0 a la fin de c...)
*/
void base27Of10(char* c, unsigned long nb)
{
}
/************************************************/
/*
  Convertit en base 10 le message contenu dans c.
*/
unsigned long base10Of27(char* c)
{
  return 0;
}
/************************************************/
/*
  Convertit en base 10 le mot "abcdfg", puis le 
  reconvertit de nouveau en base 27.
*/
int main()
{
  char c[7] = "abcdfg", d[7];
  unsigned long b10 = base10Of27(c);  
  printf("%lu\n", b10);
  base27Of10(d, b10);
  printf("%s\n", d);
  return 0;
}
 
 
 
 
 
 
