Salve a tutti.
Dato un file binario ascii utilizzando un algoritmo che ho trovato in rete sono riuscito ad ottenere il file esadecimale corrispondente. Ecco ,a me interesserebbe avere anche l'esatto contrario, ossia dato un file di testo che contiene solo caratteri esadecimali
ad esempio
"4369616F204D6F6E646F21212121"
che mi restituisca un file di testo convertito, in questo caso
"Ciao Mondo!!"
è ovvio che occorre controllare due caratteri per volta. Grazie in amticpo per l'aiuto. Cordial saluti. Ciaoo.
il codice che ho sato per le conversioni da testo normale ascii a testo corrispondente esadecimale è
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);
Quello che uso invece per la conversione opposta, quello che non funziona, è
codice:
FILE *pFile, *fw2;
if((pFile = fopen("C:\\A\\file2.txt","rb")) == NULL) return 0;
if((fw2 = fopen("C:\\A\\out2.txt","wb")) == NULL) return 0;
int v;
char c;
unsigned char c2;
while(fscanf(pFile, "%02X", &v)!=EOF)
{
c = (unsigned char)v;
fprintf(fw2, "%c", c2);
}
fclose(pFile);
fclose(fw2);
dove è l'errore? Mi crea comunque un file di testo, ma contiene tutti caratteri uguali, ÌÌÌÌÌÌÌÌ.
Grazie in anticipo. Cordiali saluti. Ciaooo