Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    trasformare un file in codice esadecimale...

    vorrei costruire un programma che preso un file ne genera un altro con dentro il file di prima trasformato in codice esadecimale ( ovvero qualcosa di simile 1F2E12EA... ) e poi l'operazione inversa... come fare???

    grazie mille...

    [EDIT]il linguaggio è il c++, l'avevo impostato ma nn so perche nn è venuto... scusate

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Lo trasforma in esadecimale ... vuoi dire in testo esadecimale?

    Se il tuo file e' fatto da tre caratteri, ad esempio

    ABC

    il file risultante deve essere un file di testo fatto cosi'

    414243

    ?

  3. #3
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    si esatto...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Qualcosa del genere

    codice:
       FILE *fp, *fw;
       char c;
    
       if((fp = fopen("C:\\test.bin","rb")) == NULL) return 0;
       if((fw = fopen("C:\\out.txt","wb")) == NULL) return 0;
    
       while((c = fgetc(fp))!=EOF)
             fprintf(fw, "%02X", (unsigned char)c);
    
       fclose(fw);
       fclose(fp);

  5. #5
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    perfetto... funziona alla perfezione...
    e se ora volessi fare l'operazione opposta???

    grazie ciao

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Perche' non provi a scrivere del codice e a mostrarlo (anche se errato) ?

  7. #7
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    beh... proviamo...

    FILE *fp, *fw;
    char c;

    if((fw = fopen("C:\\out.txt","rb")) == NULL) return 0;
    if((fp = fopen("C:\\test2.bin","wb")) == NULL) return 0;

    e fin qui ci siamo

    mmhhh... :master: l'idea sarebbe quella di ritrasformare da esadecimale... quindi al posto di "%02X" ci devo mettere qualcos'altro???
    il problema è che con quel while prendo un carattere alla volta ma a me servirebbero a gruppi di due visto che il testo esadecimale che ho ha due caratteri per ogni carattere dell'altro....

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Originariamente inviato da mamo139
    il problema è che con quel while prendo un carattere alla volta ma a me servirebbero a gruppi di due visto che il testo esadecimale che ho ha due caratteri per ogni carattere dell'altro....
    Giusto ...

  9. #9
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    // lettura file
    FILE * pFile;
    long lSize;
    char * buffer;
    pFile = fopen ( "C:\\test.bin" , "rb" );
    if (pFile==NULL) exit (1);
    // obtain file size.
    fseek (pFile , 0 , SEEK_END);
    lSize = ftell (pFile);
    rewind (pFile);
    // allocate memory to contain the whole file.
    buffer = (char*) malloc (lSize);
    if (buffer == NULL) exit (2);
    // copy the file into the buffer.
    fread (buffer,1,lSize,pFile);
    // terminate
    fclose (pFile);
    //letto c:\lboot e messo in buffer

    int y =0;
    for(int x = 0; x < lSize ; x=x+2){
    y=x+1;

    e qui mi ritrovo con buffer[x] e buffer[y] che sono le due cifre del codice esadecimale di ogni carattere.... ma ora brancolo prorpio nel buio

    }

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    E perche' mai lo devi caricare tutto in memoria? Basta scrivere

    codice:
    // Open del file da leggere
    
    int v;
    unsigned char c;
    while(fscanf(pFile, "%02X", &v) == 1)
    {
       c = (unsigned char)v;
       printf("%c", c);
    }
    		
    // Close del file

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.