Encodage en base24

cs_fadiese Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 9 novembre 2009 - 24 déc. 2006 à 15:08
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 28 déc. 2006 à 08:00
Salut à tous,

je voudrais réaliser l'opération inverse de celle décrite ici :

//PID est une Array[0..14] of byte à décoder
//Des est une Array[0..24] of byte résultat du décodage
//HN, Value: CARDINAL;

  for I := 24 downto 0 do begin
      HN := 0;
      for N := 14 downto 0 do begin
        Value := (HN shl 8) or PID[N];
        PID[N] := Value div 24;
        HN    := Value mod 24;
      end;
      Des[I] := HN;
    end;

c'est à dire partir de l'array Des pour obtenir l'array PID...
J'ai cherché mais je n'ai trouvé qu'un bon mal de tête...



Si quelqu'un a un cerveau meilleur que le mien, merci d'avance à lui.

fa

5 réponses

Utilisateur anonyme
24 déc. 2006 à 15:27
Salut

Pourquoi ne pas utiliser Indy qui fait ca très bien ? TIdDecoderMIME et TIdEncoderMIME
0
cs_fadiese Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 9 novembre 2009
24 déc. 2006 à 15:39
Merci pour la réponse, mais Indy est une véritable usine à gaz et je n'ai besoin que de quelques lignes de code.







BON NOËL





fa
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
26 déc. 2006 à 15:15
Ce qui pose surtout probleme c'est le "or".
J'ai essayé "d'inverser" l'algo mais je reste bloqué à cause de cet opérateur.

La table inverse du or donne:
0 0   0
0 1   1
1 0   NULL (cas impossible)
1 1   X (0 ou 1)

Il doit y avoir un moyen, mais je n'ai pas trouvé.
0
cs_fadiese Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 9 novembre 2009
26 déc. 2006 à 15:22
Petite correction pour la définition de PID :



//PID est une Array[0..14] of CARDINAL à décoder
//Des est une Array[0..24] of byte résultat du décodage
//HN, Value: CARDINAL;

  for I := 24 downto 0 do begin
      HN := 0;
      for N := 14 downto 0 do begin
        Value := (HN shl 8) or PID[N];
        PID[N] := Value div 24;
        HN    := Value mod 24;
      end;
      Des[I] := HN;
    end;




(l'aspirine ne peut plus rien pour moi....)

fa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
28 déc. 2006 à 08:00
Tout ça ressemble fort à du décodage/encodage de clés des produits Microsoft. Car qui d'autre, à part MS, utilise la base "quadrovigesimal" ?

Cordialement.

<hr />
L'imbécile prétentieux est celui qui se croit plus intelligent que ceux qui sont aussi bêtes que lui.
0
Rejoignez-nous