Bonsoir,

J'ai fait une fonction qui transforme une chaine de 4 caractères hexadécimaux en caractères binaires, mais je ne trouve pas la façon de faire très esthétique, y a-t-il un moyen de faire sans la définition de mes deux tableaux ?

Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function HexaToBinaire(ChaineHexa: string):string;
 
Var
    i,j,Endj: integer;
    Return: string;
    CorrespondanceBinaire : Array[0..15] of string;
    ListePossibilitesHexa : Array[0..15] of char;
 
Begin //HexaToBinaire
    (* on initialise Return à '', car on va concaténer 
     *les caractères trouvés au fur et à mesure
     *)
    Return := '';
 
    ListePossibilitesHexa[0] := '0';
    ListePossibilitesHexa[1] := '1';
    ListePossibilitesHexa[2] := '2';
    ListePossibilitesHexa[3] := '3';
    ListePossibilitesHexa[4] := '4';
    ListePossibilitesHexa[5] := '5';
    ListePossibilitesHexa[6] := '6';
    ListePossibilitesHexa[7] := '7';
    ListePossibilitesHexa[8] := '8';
    ListePossibilitesHexa[9] := '9';
    ListePossibilitesHexa[10] := 'A';
    ListePossibilitesHexa[11] := 'B';
    ListePossibilitesHexa[12] := 'C';
    ListePossibilitesHexa[13] := 'D';
    ListePossibilitesHexa[14] := 'E';
    ListePossibilitesHexa[15] := 'F';
 
    CorrespondanceBinaire[0] := '0000';
    CorrespondanceBinaire[1] := '0001';
    CorrespondanceBinaire[2] := '0010';
    CorrespondanceBinaire[3] := '0011';
    CorrespondanceBinaire[4] := '0100';
    CorrespondanceBinaire[5] := '0101';
    CorrespondanceBinaire[6] := '0110';
    CorrespondanceBinaire[7] := '0111';
    CorrespondanceBinaire[8] := '1000';
    CorrespondanceBinaire[9] := '1001';
    CorrespondanceBinaire[10] := '1010';
    CorrespondanceBinaire[11] := '1011';
    CorrespondanceBinaire[12] := '1100';
    CorrespondanceBinaire[13] := '1101';
    CorrespondanceBinaire[14] := '1110';
    CorrespondanceBinaire[15] := '1111';
 
    (*
            * Pour chaque caractère hexadécimal on vérifie sa correspondance avec le tableau
            * si elle est trouvée on affiche l'équivalent en binaire
            * Endj sert à finir plus rapidement la boucle pour éviter des itérations inutiles si correpondance trouvée
            *)
    for i:= 1 to 4 do
        Begin
            Endj := 15;
            for j:= 0 to Endj do
                Begin
                    if ChaineHexa[i] = ListePossibilitesHexa[j] then
                        Begin
                            Return := Return+CorrespondanceBinaire[j];
                            Endj := 1;
                        End;
                End;
        End;
 
    HexaToBinaire := Return;
End; //HexaToBinaire