Nwlapcug.com


Come leggere i file Hex in C++

Un file hex è un file di dati che contiene informazioni codificate in cifre esadecimali. Ci vogliono quattro bit per rappresentare una singola cifra esadecimale, quindi leggendo un file hex utilizzando il tipo di dati più piccolo disponibile in C++, char, implica la lettura di due cifre esadecimali in un momento. Isolare queste cifre con operazioni a livello di bit analizzare attraverso una cifra di file hex uno alla volta.

Istruzioni

1

Includere le intestazioni "iostream" e "fstream" inserendo le seguenti righe di codice nella parte superiore del file di origine di C++:

sono < iostream > includono < fstream > 2

Creare un oggetto "ifstream" in funzione "principale" o un altro blocco di codice con la seguente riga:

ifstream inputfile.

3

Aprire un file utilizzando il metodo "open" dell'oggetto "ifstream", specificandone il relativo nome come argomento:

inputfile.Open("hexfile.dat");

Includere il percorso completo e il nome del file da aprire utilizzando barre rovesciate (e.g.,"C:\Users\...") se il file non dovrà trovarsi nella stessa directory come file eseguibile.

4

Creare due variabili per contenere ogni coppia di cifre esadecimali, come essi sono tirati in dal file:

unsigned char h, l;

5

Avviare un ciclo "while":

() {while (1)

6

Uso il ">>" operatore per leggere un byte dal file e memorizzarlo in "h":

FileInput >> h;

7

Separare le due cifre esadecimali in "h" con le seguenti due righe:

l = h & 0x0f;

h >> = 4;

Dopo queste dichiarazioni "h" contiene la prima cifra e "l" il secondo.

8

Controllare per vedere se viene raggiunta la fine del file (o se il file è illeggibile per qualsiasi motivo), uscire dal ciclo e chiudere il file se ha:

if(!inputfile.Good()){break;inputfile.Close();}

9

Scrivere codice per gestire le cifre esadecimali come sono presi. Le seguenti linee uscita semplicemente come cifre esadecimali per la console standard:

cout << esagonale << (unsigned int) h << "";

cout << esagonale << (unsigned int) l << "";

10

Chiudere il ciclo "while":

};