Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    C - caratteri in esadecimale

    Salve a tutti.
    Ho un problema.
    Devo convertire i caratteri di un file nel loro valore ASCII esadecimale.
    Ad esempio la parola EUR dovra' essere convertita in 0x45 0x55 0x52 e salvare il tutto in un vettore di char.

    Ho provato a fare nel seguente modo:

    fscanf(input_file, "%x", &ch);
    infoFile[indRowFile++] = ch;

    ma non funziona! Nel vettore finale ho tutti 0x0E

    Dove sbaglio?

    Ciao e grazie a chi rispondera'!

    Sandro

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... non funziona perche' e' sbagliato ...

    Intanto fai qualche precisazione ... cosa e'

    infoFile

    ?

    Un vettore di char?

    In questo vettore dovrai memorizzare la stringa

    0x45 0x55 0x52

    ?

    Ma se scrivi indRowFile++ il puntatore si sposta di un solo carattere ogni valore esadecimale quando per ogni valore almeno usi (compreso lo spazio finale)

    0xab

    5 caratteri ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Ok, qualche info in piu'!

    infoFile e' cosi' definito:

    char infoFile[LUNG_CREDITO] = {(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00};

    e quello che vorrei fare e' come se volessi scrivere

    infoFile[0] = (char)0x45;
    infoFile[1] = (char)0x55;
    infoFile[2] = (char)0x52;

    ovviamente il tutto in maniera automatica leggendo i dati dal file!
    Praticamente una volta letto un carattere (ad esempio 'E') vorrei caricare nel vettore la sua rappresentazione in esadecimale ovvero (char)0x45.

    Spero di essere stato piu' chiaro!

    Ciao e grazie

    Sandro

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ah ... allora e' tutta un'altra storia ...

    C'e' un equivoco di fondo ... l'esadecimale e' solamente un sistema di rappresentazione del dato, NON e' una proprietà insita nel dato ... Quindi, la lettura dal file avviene A PRESCINDERE dall'esadecimale ma dipende solamente dal TIPO di dato (il char nel tuo caso).

    Solo dopo averlo letto, potrai visualizzarlo come vorrai, ma il dato sarà sempre quello.

    In definitiva a te basta scrivere

    infoFile[indRowFile++] = (char)fgetc(input_file);

    per leggere correttamente il singolo carattere.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    perfetto!

    Grazie mille!

    Ciao
    Sandro

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 © 2025 vBulletin Solutions, Inc. All rights reserved.