Texte2Hexa

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 19 sept. 2006 à 22:57
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 20 sept. 2006 à 01:18
Bonjour,

Je voudrais savoir si on pouvait optimiser ceci :

#include <stdio.h>
#include <string.h>

int main()
{
    static char *conv[] = {"00 ", "01 ", "02 ", "03 ", "04 ", "05 ", "06 ", "07 ", "08 ", "09 ", "0A ", "0B ", "0C ", "0D ", "0E ", "0F ",
                           "10 ", "11 ", "12 ", "13 ", "14 ", "15 ", "16 ", "17 ", "18 ", "19 ", "1A ", "1B ", "1C ", "1D ", "1E ", "1F ",
               "20 ", "21 ", "22 ", "23 ", "24 ", "25 ", "26 ", "27 ", "28 ", "29 ", "2A ", "2B ", "2C ", "2D ", "2E ", "2F ",
               "30 ", "31 ", "32 ", "33 ", "34 ", "35 ", "36 ", "37 ", "38 ", "39 ", "3A ", "3B ", "3C ", "3D ", "3E ", "3F ",
               "40 ", "41 ", "42 ", "43 ", "44 ", "45 ", "46 ", "47 ", "48 ", "49 ", "4A ", "4B ", "4C ", "4D ", "4E ", "4F ",
               "50 ", "51 ", "52 ", "53 ", "54 ", "55 ", "56 ", "57 ", "58 ", "59 ", "5A ", "5B ", "5C ", "5D ", "5E ", "5F ",
               "60 ", "61 ", "62 ", "63 ", "64 ", "65 ", "66 ", "67 ", "68 ", "69 ", "6A ", "6B ", "6C ", "6D ", "6E ", "6F ",
               "70 ", "71 ", "72 ", "73 ", "74 ", "75 ", "76 ", "77 ", "78 ", "79 ", "7A ", "7B ", "7C ", "7D ", "7E ", "7F ",
               "80 ", "81 ", "82 ", "83 ", "84 ", "85 ", "86 ", "87 ", "88 ", "89 ", "8A ", "8B ", "8C ", "8D ", "8E ", "8F ",
               "90 ", "91 ", "92 ", "93 ", "94 ", "95 ", "96 ", "97 ", "98 ", "99 ", "9A ", "9B ", "9C ", "9D ", "9E ", "9F ",
               "A0 ", "A1 ", "A2 ", "A3 ", "A4 ", "A5 ", "A6 ", "A7 ", "A8 ", "A9 ", "AA ", "AB ", "AC ", "AD ", "AE ", "AF ",
               "B0 ", "B1 ", "B2 ", "B3 ", "B4 ", "B5 ", "B6 ", "B7 ", "B8 ", "B9 ", "BA ", "BB ", "BC ", "BD ", "BE ", "BF ",
               "C0 ", "C1 ", "C2 ", "C3 ", "C4 ", "C5 ", "C6 ", "C7 ", "C8 ", "C9 ", "CA ", "CB ", "CC ", "CD ", "CE ", "CF ",
               "D0 ", "D1 ", "D2 ", "D3 ", "D4 ", "D5 ", "D6 ", "D7 ", "D8 ", "D9 ", "DA ", "DB ", "DC ", "DD ", "DE ", "DF ",
               "E0 ", "E1 ", "E2 ", "E3 ", "E4 ", "E5 ", "E6 ", "E7 ", "E8 ", "E9 ", "EA ", "EB ", "EC ", "ED ", "EE ", "EF ",
               "F0 ", "F1 ", "F2 ", "F3 ", "F4 ", "F5 ", "F6 ", "F7 ", "F8 ", "F9 ", "FA ", "FB ", "FC ", "FD ", "FE ", "FF "};

    char *texte = "bonjour";

    int taille = strlen(texte);
    int i;
   
    for(i = 0; i < taille; i++)
    printf("%s", conv[texte[i]]);
       
    printf("\n");

    return 0;
}

Mon soucis, c'est que je veux afficher à l'ecran (ou dans un textedit ou autre) l'Hexa (formaté sur 2 caractères + 1 espace) d'un fichier data (avec tout plein de  '\0') donc a la place de ma boucle, je charge un fichier en memoire (des fichiers de taille max d'environ 10 Mo) puis je le parse, caractere par caractere (ca risque d'etre long non ?)

Merci pour vos réponses,

Matt...

2 réponses

cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
19 sept. 2006 à 23:15
Salut

for(i = 0; i < taille; i++)
printf("%02x ou %02X", i);

Sinon pour textedit ou autre regarde du coté de wprintf toujours avec le %02x ou %02X.

++

eRoZion
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
20 sept. 2006 à 01:18
Errr, je vois pas le rapport en wprintf et un textedit.

Sinon, convertir un fichier de 10Mo et l'afficher dans un textedit en tenant compte que chaque valeur convertie qui prenait initialement 1 octet en prendra maintenant 3 est impensable. Si tu prévoie réelement convertir ce genre de fichier, il faudra trouver une solution comme l'écrire dans un autre fichier.

Pour ce qui est de la lenteur potentiel, en effet, ce sera lent (surtout pour un fichier de 10Mo) mais je ne vois pas comment faire autrement.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
0